请帮忙。我的代码中有一个indexArrayOutOfBounds。这有什么问题? 编译器说错误发生在if ststement。
private void tableTest(){
int nRow = sampleTable.getRowCount();
int nCol = sampleTable.getColumnCount();
int counter = 0;
int j, i;
Object[][] tableData = new Object[nRow][nCol];
for (i = 0 ; i < nRow ; i++){
for (j = 3 ; j < nCol ; j++){
tableData[i][j] = sampleTable.getValueAt(i,j);
System.out.println(tableData[i][j]);
//if(counter)
// Arrays.deepToString(tableData[i][j]);
}
System.out.println("end");
if(tableData[i][j].equals(true)){
counter++;
System.out.print(counter);
}
}
}
答案 0 :(得分:2)
内循环:for (j = 3 ; j < nCol ; j++){}
终止后,j = nCol
的值。当您尝试在tableData[i][j]
条件中访问元素if
时,您正试图到达阵列边界之外的内存位置。
答案 1 :(得分:0)
您需要将if
块放在内部for
循环中,否则索引不会与数组中的任何内容匹配。
目前,当if
已经达到j
时,nCol
语句就会运行,这意味着它超出了数组的范围。
要解决此问题,请从评论下方的行中删除}
,然后在末尾添加}
。这有效地将if
块移动到内循环中。
<强>更新强>
您可能会在数组中尚未分配对象的引用上调用equals
的空指针异常。您应该更改if
条件来说明这一点。
if(tableData[i][j] != null && tableData[i][j].equals(true)){