报错:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 15
at indi.driverschool.iframe.owner.SelOwnerInfoJPanel.queryData(SelOwnerInfoJPanel.java:180)
at indi.driverschool.iframe.owner.SelOwnerInfoJPanel.<init>(SelOwnerInfoJPanel.java:83)
at indi.driverschool.iframe.owner.OwnerJPanel.<init>(OwnerJPanel.java:49)
at indi.driverschool.iframe.MainJFrame.mouseClicked(MainJFrame.java:365)
定位到SelOwnerInfoJPanel.java:180:
data[i][15] = list.get(i).getHappen_time();
ArrayListlist =new ArrayList();
list = OwnerController.selectAll();
查看OwnerController.selectAll():
public static ArrayList selectAll() {
OwnerDAO ownerInfo = new OwnerDAO();
return ownerInfo.queryAll();
}
查看OwnerDAO.queryAll()——>检查返回的数组,但是长度和返回并提取出来的都是16,故这里是没错的,返回求查看出错的位置,查看其有关的上下文:
data = new Object[list.size()][head.length];
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < head.length; j++) {
………
data[i][15] = list.get(i).getHappen_time();
}
}
JAVA 的 API中:
public class ArrayIndexOutOfBoundsExceptionextends IndexOutOfBoundsException
指用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
也就是说角标异常!可能的原因是使用的角标大于等于数组的长度或为负数!
检查哪里的长度不对,先检查head(为表头)
head = new String[] { "ID", "车主编号", "车主姓名", "性别", "年龄","身份证号","地址","名下车辆数量 ","名下车牌号","名下教练数量","名下教练姓名","相片编号","操作人编号","备注","信息录入时间"};
发现少了一个字段”联系方式”,增加之后就可以正常运行且不报错了。
粗心大意