Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExcept
Nakeele
Messages postés4Date d'inscriptionmercredi 16 septembre 2015StatutMembreDernière intervention11 octobre 2015
-
11 oct. 2015 à 20:40
KX
Messages postés16752Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 août 2024
-
11 oct. 2015 à 21:55
salut,
Je suis en train de faire un exercice mais j'ai un message d'erreur et je tourne en rond pour voir comment je fixe ca mais sans resultats.
J'aimerais savoir la raison pour laquelle je recois ce message SVP.
Merci !
public class Sudoku {
private int[][] tableaufinal; private int placements = 0; // Placements representent les emplacements possibles des chiffres de 1 a 9 private int complexite = 0; // Complexite : 1 (debutant), 2 (intermediaire) et 3 (avance) private String nom; // Nom du joueur private int[][] grille; private int n; //nombre d'elements dans le SUDOKU (un carre n*n, donc 3*3, 9*9, etc.)
public static void main(String[] args) {
//i = 3; //j = 3;
Sudoku unsudoku = new Sudoku("Gandalf Tombe", 3, 3, 1);
// constructeur de SUDOKU public Sudoku(String leNom, int n, int lesPlacements, int laComplexite) { // a completer // ...
this.n = n; // affectation du parametre n a la variable de classe n grille = new int[n][n]; // declaration du tableau grille pour qu'il fasse n lignes de n colonnes tableaufinal = new int[n][n]; //declaration du tableau grille pour qu'il fasse n lignes de n colonnes pour tableauFinal nom = leNom; placements = lesPlacements; complexite = laComplexite;
initialisation(); }
public void initialisation () { // initialise tous les champs de la grille a 0 // ... for(int i=0; i<grille.length; i++) { for(int j=0; j<grille[i].length; j++) { grille[i][j]=0; } }
} // a completer
public int getTableau(int i, int j) { return tableaufinal [i][j]; } public int getGrille(int i, int j) { return grille [i][j]; } public String getNom() { return nom; }
}
A voir également:
Exception in thread "main" java.lang.error: unresolved compilation problem
KX
Messages postés16752Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 août 2024127 11 oct. 2015 à 21:55
Bonjour,
En Java les indices d'un tableau de taille N peuvent aller de 0 à N-1.
Ici tu as des tableaux de taille 3. Tu ne peux donc pas faire getTableau(3,3) car la case maximale est (2,2)...
Remarque : le message d'erreur te donne des informations précieuses pour déboguer.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at pipe.Sudoku.getTableau(Sudoku.java:59)
at pipe.Sudoku.main(Sudoku.java:21)
D'une part le nom de l'exeption te permet d'aller voir la documentation associée : ArrayIndexOutOfBoundsException Dans ton cas tu as même une information complémentaire : le 3, qui correspond à la valeur de l'indice qui est incorrect.
Ensuite, les lignes du dessous indiquent le code qui plante.
L'erreur est ligne 59 de la méthode getTableau :
return tableaufinal [i][j];
Cette erreur intervient quand elle est appelée ligne 21 dans le main :