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)
我究竟做错了什么?我想避免使用逗号分隔元素.任何人都可以解释为什么抛出异常以及如何解决它?我想要了解更多.
您应该将字符串拆分一次并将数组存储在某处.
在这里你迭代高达数字符的字符串中,不占空间分隔的数字的数量.
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