Java 如何连接字符串的变量参数
我需要将可变数量的参数(类型字符串)连接到一个字符串: 例如: 应该返回Java 如何连接字符串的变量参数,java,string,arguments,return,variadic-functions,Java,String,Arguments,Return,Variadic Functions,我需要将可变数量的参数(类型字符串)连接到一个字符串: 例如: 应该返回java,但我的实现返回jajaja 我试过这个: public static String add(String... strings) { for (String arg : strings) { return String.format(arg.concat(arg)); } return "string"; } 我做错了什么?您是在循环的第一次迭代(return String
java
,但我的实现返回jajaja
我试过这个:
public static String add(String... strings) {
for (String arg : strings) {
return String.format(arg.concat(arg));
}
return "string";
}
我做错了什么?您是在循环的第一次迭代(
return String.format…
)而不是在最后返回。您在这里应该使用的是:
公共静态字符串添加(字符串…字符串){
StringBuilder=新的StringBuilder();
for(字符串arg:strings){
builder.append(arg);
}
return builder.toString();//输出StringBuilder的全部内容。
}
方法很多,但StringBuilder可能是最有效的:
public static String add(String... strings) {
StringBuilder sb = new StringBuilder();
for (String arg : strings) {
sb.append(arg);
}
return sb.toString();
}
基本上,将构建器初始化为空,然后循环附加每个参数,最后返回构建器的内容
您可能希望在循环中添加一些代码来处理参数中的空值(数组不会是空的,但其中的字符串可以是空的。按原样,此方法将为空值附加字符串“null”,这可能不是您想要的。尝试以下操作:
String result;
for (int i =0, i < strings.size(), i++){
result += strings[i];
}
return result;
字符串结果;
对于(int i=0,i
您可以使用新的Java 8 lambdas和类似
String[] arr = { "ja", "va" };
Optional<String> result = Arrays.asList(arr).parallelStream()
.reduce(new BinaryOperator<String>() {
public String apply(String t, String u) {
return t + u;
}
});
System.out.println(result.get());
String[]arr={“ja”,“va”};
可选结果=Arrays.asList(arr.parallelStream())
.reduce(新的二进制运算符(){
公共字符串应用(字符串t、字符串u){
返回t+u;
}
});
System.out.println(result.get());
将Java 8与流API结合使用:
String joined = Stream.of(strings).collect(Collectors.joining());
用一个方法包装,它可以如下所示:
import java.util.stream.Collectors;
import java.util.stream.Stream;
public static String join(String separator, String... strings) {
return Stream.of(strings).collect(Collectors.joining(separator));
}
为了回答您的问题,这一行是您做错的地方: 返回String.format(arg.concat(arg)) for each循环arg中的第一次是字符串ja。您获取该字符串并与相同的var arg连接,即ja。然后返回,这样您就永远不会进入第二次循环 若要修复,请按照其他人的建议进行操作,并使用一些方法收集和加入每个变量 若要为您提供另一个要加入的解决方案,您可以尝试只加入varargs变量。因此,您可以尝试: 返回String.join(“”,strings)
这样,无需编写循环,只需连接字符串。这假定为Java 9。现在您可能需要使用:
String.join(separator,strings)
它可以工作,但对于大量字符串来说,它会非常低效。是的,StringBuilder更好,我只是想展示另一种连接字符串的方法。您确定要返回此返回“String”;?
import java.util.stream.Collectors;
import java.util.stream.Stream;
public static String join(String separator, String... strings) {
return Stream.of(strings).collect(Collectors.joining(separator));
}