Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过从列表中获取参数来创建String.format字符串_Java_String_Java Stream_String.format - Fatal编程技术网

Java 如何通过从列表中获取参数来创建String.format字符串

Java 如何通过从列表中获取参数来创建String.format字符串,java,string,java-stream,string.format,Java,String,Java Stream,String.format,我想从包含整数的列表的值中创建一个类似于String.format的String.format字符串(“Q1={},Q2={},Q3={},Q4={}”列表) 私有字符串createString(播放器){ 列表答案=新建ArrayList(); add(player.getQuestion1()); add(player.getQuestion2()); add(player.getQuestion3()); add(player.getQuestion4()); add(player.get

我想从包含整数的列表的值中创建一个类似于String.format的String.format字符串(“Q1={},Q2={},Q3={},Q4={}”列表)

私有字符串createString(播放器){
列表答案=新建ArrayList();
add(player.getQuestion1());
add(player.getQuestion2());
add(player.getQuestion3());
add(player.getQuestion4());
add(player.getQuestion5());
add(player.getQuestion6());
add(player.getQuestion7());
add(player.getQuestion8());
add(player.getQuestion9());
add(player.getQuestion10());
返回String.format(“Q1={},Q2={},Q3={},Q4={},Q5={},Q6={},Q7={},Q8={},Q9={},Q10={}”,answers.stream().map(a->a.toString());
}

使用
收集器执行类似以下操作。根据需要使用T索引和答案将
与映射连接起来:

return IntStream.range(0, answers.size())
            .mapToObj(idx -> String.format("Q%s = %s", idx + 1, answers.get(idx)))
            .collect(Collectors.joining(", "))

String.format
不适合格式化列表。通常,
String.join
更适合

首先,创建要用逗号连接的字符串列表:

List<String> strings = IntStream.rangeClosed(1, answers.size())
    .mapToObj(x -> "Q" + x + "=" + answers.get(x - 1))
    .collect(Collectors.toList());

String.format
在本例中不起作用,因为您需要格式中的占位符数量作为列表大小。您最好构建自己的字符串。但如果您想坚持使用
String.format

由于
String.format
使用varargs(这是一个数组),您可以简单地使用
toArray()
。请注意,格式中的占位符不能是
{}
,而是类似
%d
%s

return String.format("Q1=%s, Q2=%s, Q3=%s, Q4=%s, Q5=%s, ...", answers.toArray());

你能给问题添加更多的细节吗,就像你到目前为止所做的那样。@JennisVaishnav请再次检查我更新了主题
Q1,Q2
手动附加在那里,即问题的索引。with
Q
中的数字1,2,3直观地说可能是问题的索引。是的,它是。但是每个问题都有单独的获取者无论如何,这10个问题。如果OP想要硬编码字符串,这是将值列表传递给varargs方法的语法正确的方法。
return String.format("Q1=%s, Q2=%s, Q3=%s, Q4=%s, Q5=%s, ...", answers.toArray());