我正在使用此程序获得ArrayIndexOutOfBoundsException
,而我无法弄清问题是什么。它允许用户键入3个输入,但只是给出错误!
如果有人能够看到我出错的地方(我相信'部分'在.split()
之后,我需要分隔符)...
public class SplittingStrings
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
//Sample input(not sorted the validation yet) "Chelsea : Arsenal : 2 : 1"
Scanner sc = new Scanner(System.in);
String results = sc.nextLine();
int count = -1;
String str = null;
String[] parts = new String[100];
parts = results.split(":");
String home_team = parts[0];
String away_team = parts[1];
String home_score = parts[2];
String away_score = parts[3];
String[] refinedArray = new String[parts.length];
for (int i = 0;i < 100; i++){
results= sc.nextLine();
for(String s : parts) {
if(s != null) { // Skips over null values. Add "|| "".equals(s)" if you want to exclude empty strings
refinedArray[++count] = s; // Increments count and sets a value in the refined array
}
}
if(sc.equals("stop")) {
Arrays.stream(parts, 0, i).forEach(System.out::println);
}
parts[i] = str;
}
}
答案 0 :(得分:0)
正是因为这句话:parts[i] = str
。您在此语句中更改变量parts
的值:parts = results.split(":");
,因此您可以更改此数组的大小(可能小于100),并在for循环中访问此数组中不存在的元素。
答案 1 :(得分:0)
创建一个包含100个元素的数组是没有意义的
String[] parts = new String[100];
你用一个只有4(?)
的数组覆盖了它parts = results.split(":");
你的循环上升到100,但parts[4]
抛出异常
不清楚results
应该是什么,