如何创建数组的字符串
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] + ", ");
。那会给你一个清单,打印出来。为了使它看起来更好,您可以计算字符串的字符数并使用子字符串删除最后一个逗号。
希望对您有所帮助。
我正在尝试创建数组 {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] + ", ");
。那会给你一个清单,打印出来。为了使它看起来更好,您可以计算字符串的字符数并使用子字符串删除最后一个逗号。
希望对您有所帮助。