如何创建数组的字符串

How to create a String of an array

我正在尝试创建数组 {1, 2, 3, 4, 5, 6, 7} 的字符串,但当我 运行 它时似乎无法得到正确的答案.

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);

我得到的答案是 7,而我实际上是想得到 1、2、3、4、5、6、7

有人可以向我解释为什么下面的代码给出了正确的答案,但是当我使用字符串时却没有,以及我应该如何更正上面的代码。

int [] arr = {1, 2, 3, 4, 5, 6, 7};

for(int i = 0; i < arr.length; i++){
  System.out.print(arr[i] + ", ");
}

将您的代码更改为:

for(int i = 0; i < arr.length; i++){
  s += (arr[i] + " ");   <<---- you we're missing the '+' 
}

您需要附加到您的字符串。也就是说,您需要在末尾添加另一个数字(使用 +=),而不是仅仅为每个数字重新分配字符串(使用 =)。

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) 完成所有事情。

如果您使用 s = (arr[i] + " ");,您将覆盖您的字符串。

最好使用s += (arr[i] + " ");s = s.concat(arr[i] + " ");

您将在每次迭代时重新初始化 s s = arr[i] + " " 因此当循环完成时 s 将是数组中的最后一个值。

要将所有值添加到 s,您必须使用 += 而不是 =

例如s += String.valueOf(arr[i]) + " "

第一个代码的问题是对象 s 在 for 循环的每次迭代中被重写...这就是它打印最后一个重写值 7 的原因 打印您可以使用的所有值 s = s+(arr[i] + ", ");

如果您希望每次从数组中获取值时都打印出来,您应该将 System.out.println(s); 放在 for 循环中,而不是在 for 循环之后。如果你想在一行中打印所有内容,那么你应该使用 s.concat(arr[i] + ", ");。这会将数组中的值添加到字符串的末尾。

基本上,对于您要查找的内容,只需将 s = (arr[i] + ", "); 更改为 s = s.concat(arr[i] + ", ");。那会给你一个清单,打印出来。为了使它看起来更好,您可以计算字符串的字符数并使用子字符串删除最后一个逗号。

希望对您有所帮助。