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:653
或ArrayList.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());
}
}
答案 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();