Impossibile assegnare il valore in Array Java 2D - ArrayIndexOutOfBoundsException
-
24-10-2019 - |
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';
}
}
}
}
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