Domanda

Ho problemi assegnando un valore alla mia matrice 2D in Java. L'ultima riga del codice, theGrid[rowLoop][colLoop] = 'x';, sta gettando un errore ArrayIndexOutOfBoundsException. Qualcuno potrebbe spiegare perché questo sta accadendo?

Questo è il mio codice ...

public class Main {
    public static char[][] theGrid;

    public static void main(String[] args) {
        createAndFillGrid(10,10);
    }

    public static void createAndFillGrid(int rows, int cols) {
        theGrid = new char[rows][cols];
        int rowLoop = 0;

        for (rowLoop = 0; rowLoop <= theGrid.length; rowLoop++) {
            int colLoop = 0;

            for (colLoop = 0; colLoop <= theGrid[0].length; colLoop++) {
                theGrid[rowLoop][colLoop] = 'x';
            }
        }
    }
}
È stato utile?

Soluzione

Qui è il problema rowLoop <= theGrid.length e colLoop <= theGrid[0].length. Dovrebbe essere:

rowLoop < theGrid.length

e

colLoop < theGrid[0].length

La ragione per l'errore è perché l'indice è andare fino alla lunghezza dell'array. Quindi, se la lunghezza fosse 10, si sale all'indice 10. Questo non è un indice valido nella matrice. Gli array hanno indici validi da 0 a length - 1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top