数组不接受第四个输入?

时间:2017-06-22 00:28:10

标签: java arrays indexoutofboundsexception

我正在使用此程序获得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;
    }
}

2 个答案:

答案 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应该是什么,