将一串数字转换为数组

chr*_*ris 0 java arrays string exception

我在创建将一串数字转换为数组的程序时遇到问题.

我知道这里有类似的问题,但我必须处理的是一组数字,例如[10 15 16 0 57 438 57 18]

继续我到目前为止所拥有的:

import java.util.Scanner;
public class Histogram {

   public static void main(String[] args) {
     Scanner keyboard = new Scanner(System.in);
     String numbers;


     numbers = keyboard.next();
     System.out.println(numbers);

     int [] n1 = new int [numbers.length()];



     for(int n = 0; n < numbers.length(); n++) {
        n1[n] = Integer.parseInt(numbers.split(" ")[n]);
     }


}
}
Run Code Online (Sandbox Code Playgroud)

此代码抛出抛出异常:

10 15 20 25 30
10
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Histogram.main(Histogram.java:18)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我想避免使用逗号分隔元素.任何人都可以解释为什么抛出异常以及如何解决它?我想要了解更多.

Mar*_*ers 5

您应该将字符串拆分一次并将数组存储在某处.

在这里你迭代高达数字符的字符串中,不占空间分隔的数字的数量.

int [] n1 = new int [numbers.length()];
for(int n = 0; n < numbers.length(); n++) {
   n1[n] = Integer.parseInt(numbers.split(" ")[n]);
}
Run Code Online (Sandbox Code Playgroud)

改成:

String[] parts = numbers.split(" ");
int[] n1 = new int[parts.length];
for(int n = 0; n < parts.length; n++) {
   n1[n] = Integer.parseInt(parts[n]);
}
Run Code Online (Sandbox Code Playgroud)

看到它在线工作:ideone

  • @chris,你正在寻找`split()`返回的长度(一个字符串片段数组),而不是整个字符串的长度. (2认同)