索引时的IndexOutOfBoundsException:4,大小:4向ArrayList

时间:2015-05-23 02:25:51

标签: java arraylist

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    at java.util.ArrayList.get(ArrayList.java:429)
    at seatOrganiser.Arranger.breakIfTwo(Arranger.java:30)
    at seatOrganiser.Arranger.main(Arranger.java:17)

当我点击ArrayList.java:653ArrayList.java:429时,我得到一个" 653不是java.util.arraylist中的有效行号。"

我正在编写一个应用程序来创建基于excel数据的座位表,并且在向StringList的字符串列表添加元素时出现IndexOutOfBoundsException错误。我知道这是因为调用一个超出ArrayList范围的索引,但为什么超出范围?

代码:

public static void breakIfTwo(ArrayList<ArrayList<HSSFCell>> firstShowStudents, boolean multipleNeeded) {
    ArrayList<HSSFCell> list;
    list = firstShowStudents.get(0);
    ArrayList<String> temporary = new ArrayList<String>();
    temporary.add(list.get(4).getStringCellValue());

    for (int i = 1; i < firstShowStudents.size(); i++) {
        list = firstShowStudents.get(i);
        temporary.add(list.get(4).getStringCellValue());
    }
}

2 个答案:

答案 0 :(得分:1)

它已超出范围,因为Java已编入索引0。换句话说,长度为4的数组被索引为:

0,1,2,3。

因此4大于最大指数3.

另一方面,Excel是1索引的,这意味着长度为4的数组被索引为: 1,2,3,4。

答案 1 :(得分:0)

如果您输入return integer.Max然后更改 这与arraylist.size();