我试图创建一个数组的字符串{1,2,3,4,5,6,7},但是当我运行它时,我似乎无法得到正确的答案。 / p>
int [] arr = {1, 2, 3, 4, 5, 6, 7};
String s = " ";
for(int i = 0; i < arr.length; i++){
s = (arr[i] + ", ");
}
System.out.println(s);
当我实际上跳到1,2,3,4,5,6,7时,我得到的答案是7
有人可以向我解释为什么下面这段代码给出了正确的答案,但是当我使用字符串时,它并不是我应该如何纠正上面的代码。
int [] arr = {1, 2, 3, 4, 5, 6, 7};
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + ", ");
}
答案 0 :(得分:3)
您在每次迭代s
重新初始化s = arr[i] + " "
,因此当循环完成时,s
将是数组中的最后一个值。
要将所有值添加到s
,您必须使用+=
代替=
例如s += String.valueOf(arr[i]) + " "
答案 1 :(得分:1)
您需要追加到您的字符串中。也就是说,您需要在末尾添加另一个数字(使用+=
),而不是仅为每个数字重新分配字符串(使用=
)。
for (int i = 0; i < arr.length; ++i){
s += arr[i] + " ";
}
或者更简洁:
for (int n : arr) {
s += n + " ";
}
或者,如果您不想被担心表现的人告知,请使用StringBuilder
:
StringBuilder sb = new StringBuilder();
for (int n : arr) {
s.append(n).append(' ');
}
String s = sb.toString();
或者只使用Arrays.toString(arr)
来完成整个事情。
答案 2 :(得分:0)
将您的代码更改为:
for(int i = 0; i < arr.length; i++){
s += (arr[i] + " "); <<---- you we're missing the '+'
}
答案 3 :(得分:0)
如果您使用s = (arr[i] + " ");
,则会覆盖您的字符串。
更好地使用s += (arr[i] + " ");
或s = s.concat(arr[i] + " ");
答案 4 :(得分:0)
第一个代码的问题是对象s在for循环的每次迭代中都被覆盖...这就是为什么它打印最后一个覆盖值为7的原因 要打印您可以使用的所有值 s = s +(arr [i] +&#34;,&#34;);
答案 5 :(得分:0)
如果您希望每次从阵列中获取值时都打印出值,则应将System.out.println(s);
放在for
循环的内,而不是for
循环。如果您希望将它们全部打印在一行中,那么您应该使用s.concat(arr[i] + ", ");
。这会将数组中的值添加到字符串的末尾。
答案 6 :(得分:0)
基本上,对于您正在寻找的内容,只需将s = (arr[i] + ", ");
更改为s = s.concat(arr[i] + ", ");
即可。这会给你一个列表,打印出来。为了使它看起来更好,你可以获取字符串的字符数,并使用子字符串删除最后一个逗号。
我希望这会有所帮助。