J'ai recherché certaines entrées, mais je n'ai pas pu répondre correctement à ma question moi-même.
J'essaie de remplir un tableau à 2 dimensions avec des valeurs. Comme test, je fais actuellement cela en essayant de remplir le tableau avec le nombre entier 1.
Je ne comprends pas mon erreur.
public static void creatBoard () { final int L = 6; final int H = 6; // Modell: int [] [] board = new int [L] [H]; for (int i = 0; i<=board.length; i++) { for (int j = 0; j<=board.length; j++) { board [i] [j] = 1; } System.out.println(""); }
p >
3 Réponses :
Utilisez l'index 0 à la longueur-1 (comme l'index du tableau commence par 0)
public static void creatBoard () { final int L = 6; final int H = 6; // Modell: int [] [] board = new int [L] [H]; for (int i = 0; i<board.length; i++) { for (int j = 0; j<board[i].length; j++) { board [i] [j] = 1; } System.out.println(""); } }
il suffit de le déboguer et vous pouvez voir que
for (int i = 0; i<board.length; i++) { for (int j = 0; j<board[i].length; j++) { board [i] [j] = 1; } System.out.println(""); }
i et j changent les valeurs de 0 à 6, cela signifie qu'il est hors des limites des tableaux (vous itérez sur 7 éléments, au lieu de 6), supprimez simplement =
les corps de boucle de connexion
for (int i = 0; i<=board.length; i++) { for (int j = 0; j<=board.length; j++) { board [i] [j] = 1; } System.out.println(""); }
Votre tableau de bord est de taille 6x6, donc la board.length est de 6.
Lorsque vous exécutez la boucle for (int j = 0; j <= board.length; ij +) , elle s'exécute de 0 à 6 mais l'indexation du tableau est de 0 à 5. Donc lorsque j = 6, ExceptionOutOfBounds se produit car il fera référence à l'index board [0] [6] .
Modifiez la condition dans les deux boucles de <= board.length à
Merci beaucoup ! J'ai encore une petite question. Si j'ai un array 2 D int [] [] = board = new [6] [7]
quel est le .length
? Est-ce le 6 ou le 7
@ quarante4seven Lorsque vous faites array.length, cela vous donne le nombre de lignes dans le tableau. Si votre tableau est [6] [7], le array.length vous donnera 6. Si vous voulez la longueur d'une ligne spécifique, vous devez faire columnLength = array [0] .length .. Regardez ici pour plus de détails: stackoverflow.com/questions/4000169/…
L'index d'un tableau commence à 0. Vous avez créé un tableau de taille 6, les index de votre tableau vont donc de 0 à 5. Vos boucles vont de 0 à 6 (à cause de la notation
<=
). Ainsi, lorsque votre boucle atteint l'indice 6, votre tableau devient OutOfBounds.