Вопрос

Please help. I'm having an indexArrayOutOfBounds in my code. what's wrong with this? the compiler says the error occurs at the 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);
            }
        }

    }
Это было полезно?

Решение 2

You need that if block to be inside the inner for loop, or the indexes don't match to anything in the array.

Currently, that if statement runs when j has already reached nCol, which means it has exceeded the bounds of the array.

To fix this, remove the } from the line below the comments, and add a } right at the end. This effectively moves the if block up into the inner loop.

Update

You might get a null pointer exception calling equals on references in the array that have not been assigned an object. You should probably change the if condition to say this.

if(tableData[i][j] != null && tableData[i][j].equals(true)){

Другие советы

Once your inner loop :for (j = 3 ; j < nCol ; j++){} terminates, the value of j = nCol. When you try to access element tableData[i][j] in your if condition, you are trying to reach to a memory location out of the bounds of the array.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top