我正在尝试将整数字符串添加到数组中,但这是不正确的

时间:2019-03-17 08:59:22

标签: java arrays split

我有一个字符串:

"1 2 3 4 5 6 7 8 9"

,我希望将其添加到我的数组中,使其变为:

[1,2,3,4,5,6,7,8,9]

但是,当我运行代码时,

int[] leftValues = new int[9];
    for (String w:left.split("\\s",0)){
      for (int i = 0; i<9; i++){
        leftValues[i] = Integer.valueOf(w);
      }
    }

我的输出给了我:

[9,9,9,9,9,9,9,9,9]

我可以知道我在做什么错吗?

2 个答案:

答案 0 :(得分:3)

您的嵌套循环首先将第一个整数分配给数组的所有索引,然后将第二个整数...分配给最后一个整数(9)。因此,您的阵列最终仅保留9s。

您需要一个循环:

int i = 0;
for (String w : left.split("\\s",0)) {
    leftValues[i] = Integer.valueOf(w);
    i++;
}

int i = 0;
for (String w : left.split("\\s",0)) {
    leftValues[i++] = Integer.valueOf(w);
}

答案 1 :(得分:1)

这是Java 8简洁的实现方式

String numbers = "1 2 3 4 5 6 7 8 9";
int[] integers = Arrays.stream(numbers.split("\\s"))
                       .mapToInt(s -> Integer.parseInt(s))
                       .toArray();