IndexOutOfBounds ArrayList错误

时间:2018-04-16 16:58:41

标签: java arrays arraylist indexoutofboundsexception

所以我有两个arraylists,一个是多维的,另一个只是一个arraylist。我似乎总是出错了:

  

线程中的异常" main" java.lang.IndexOutOfBoundsException:索引:1,大小:1       在java.util.ArrayList.rangeCheck(未知来源)       at java.util.ArrayList.get(Unknown Source)       at is15147029.main(is15147029.java:303)

我不知道为什么,我在这里做的是将来自另一个数组的整数归入数组列表。我已经检查过数组是否有整数但是每当我尝试将整数添加到arraylist中时我都会收到错误。

ArrayList<Integer> selOrd = new ArrayList<Integer>();
    ArrayList<ArrayList<Integer>> ordIndex = new ArrayList<ArrayList<Integer>>();
    for(int i = 0; i < finalCost.length; i++) {
        int lowCost = 0;
        if(finalCost[i] > lowCost) {
            lowCost = finalCost[i];
            selOrd.add(0, finalCost[i]);
        }
        else if(finalCost[i] <= lowCost ) selOrd.add(finalCost[i]);
    }
    //Get Average Fitness Cost
    for(int i = 0; i < finalCost.length; i++) total = total + finalCost[i];
    avg = total/(finalCost.length);
    //Sort into s1, s2, s3
    for(int i = 0; i < selOrd.size(); i++) {
        if(selOrd.get(i) > avg) ordIndex.get(0).add(selOrd.get(i));
        if(selOrd.get(i) == avg) ordIndex.get(1).add(selOrd.get(i));
        if(selOrd.get(i) < avg) ordIndex.get(2).add(selOrd.get(i));
    }

将整数添加到selOrd时似乎发生错误。

Ant的帮助将不胜感激,我的代码中的另一个数组列表也有类似的问题。谢谢

2 个答案:

答案 0 :(得分:1)

问题很可能是硬编码索引值的结果。 具体为get(1)get(2)

您必须验证ordIndex.size() >= 3中的内容 为了安全地执行get(2)ordIndex.size() >= 2安全执行get(1)

另外, 注意错误信息。 例外明确指出index 1, size 1

如果数组的大小是一个元素,那么任何访问数组中第二个元素(索引值为1)的尝试都必须失败。

答案 1 :(得分:0)

乍一看你的代码,我没有看到你向ArrayLists的ordIndex ArrayList添加任何东西,所以每次调用它都会引发异常。