apache poi indexoutofbound 异常

apache poi indexoutofbound exception

但是,从我上面的程序中,我得到了这个异常:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at ibguobform.ReadExcel.main(ReadExcel.java:66)
Java Result: 1

我犯了什么错误?

您的代码试图引用只有三个元素的集合的第四个元素:

record.get(3)

因为只有三个元素,尝试引用第四个会产生错误。

为什么只有三个元素?

嗯,看数据:

Ali     M     20
Abu     M     25
Siti    F     30

每行三个元素。

似乎正在发生的事情是代码正在动态检查最后一个 "element":

for(int k = 0; k < row.getLastCellNum(); k++){
    cell = row.getCell(k, Row.CREATE_NULL_AS_BLANK);
}

row.getLastCellNum() 似乎告诉代码只有三个单元格。 (因为,好吧,只有三个单元格包含数据。)如果第四个单元格即使在没有数据时也有效,请明确注意在代码中始终使用四个元素:

for(int k = 0; k < 4; k++){
    cell = row.getCell(k, Row.CREATE_NULL_AS_BLANK);
}