Erreur java
bathna
-
bathna -
bathna -
Bonjour, qlq peut m'aider s'il vous plait
..
voici une methode que je veux l'executer.
mais il me donne l'erreur :
voici la ligne
comment je peux le resoudre
..
voici une methode que je veux l'executer.
public static void explore(int position, int depth) {
int[][] matAdja= getMatriceAdjacente();
int[][] matAdja2 = new int[listeNoeuds.size()+1][listeNoeuds.size()+1] ;
for(int k = 0 ; k <listeNoeuds.size(); k++) {
for(int l = 0 ; l <listeNoeuds.size(); l++) {
matAdja2[k][l]=matAdja [k+1][l+1];
}
System.out.print ("\n");}
for(int k = 0 ; k <listeNoeuds.size(); k++) {
for(int l = 0 ; l <listeNoeuds.size(); l++) {
System.out.print (matAdja2 [k][l]+ " ");
}
System.out.print ("\n");}
path[depth]=position;
// on est sur le sommet d'arrivé -> fini
if (position==4) {
// affiche la solution
for(int i=0;i<=depth;i++)
System.out.print(path[i]+" ");
// ArrayList pathlist = new ArrayList<>(path[i]);
// pathlist.add(path[i]);
System.out.print("\n");
return;
}
// sinon...
taboo[position]=true; // on pose un caillou
// on explore les chemins restants
for(int i=0;i<listeNoeuds.size()+1;i++) {
if (matAdja2[position][i]==0 || taboo[i])
continue;
explore(i,depth+1);
}
taboo[position]=false; // on retire le caillou
}
mais il me donne l'erreur :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at modeleGraphe.Graphe.explore(Graphe.java:114).
voici la ligne
if (matAdja2[position][i]==0 || taboo[i])
comment je peux le resoudre
A voir également:
- Erreur java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
1 réponse
Bonjour,
De manière générale,
Vu ton code c'est difficile de savoir sur quel élément ça plante, car sur ta ligne il y a 3 accès tableaux, donc potentiellement les 3 peuvent être en cause.
Je commencerai par vérifier la taille de taboo dont tu ne nous as pas donné le code, mais dont tu as peut-être oublié de faire la taille "+1" de la même manière que matAdja2.
Remarque : si ça plante avec i=1 alors que tu fais un +1 sur i, ça veut dire ta listeNoeuds est vide...
De manière générale,
ArrayIndexOutOfBoundsException: 1, signifie que tu fais un tab[1] sur un tableau où l'indice 1 n'existe pas.
Vu ton code c'est difficile de savoir sur quel élément ça plante, car sur ta ligne il y a 3 accès tableaux, donc potentiellement les 3 peuvent être en cause.
Je commencerai par vérifier la taille de taboo dont tu ne nous as pas donné le code, mais dont tu as peut-être oublié de faire la taille "+1" de la même manière que matAdja2.
Remarque : si ça plante avec i=1 alors que tu fais un +1 sur i, ça veut dire ta listeNoeuds est vide...
.
mais ma liste des nœuds n'est pas vide, et j'ai déjà fixé la taille de taboo et path a nbre des noeuds +1 et plus que ça lorsque j'ai testé la methode ailleurs dans une classe independante ça marche tres bien donc je ne sais pas comment faire vraiment????
System.out.println("matAdja2.length=" + matAdja2.length); System.out.println("position=" + position); int[] tmp = matAdja2[position]; // erreur ? System.out.println("tmp.length=" + tmp.length); System.out.println("i=" + i); int n = tmp[i]; // erreur ? System.out.println("n=" + n); System.out.println("taboo.length=" + taboo.length); System.out.println("i=" + i); boolean b = taboo[i]; // erreur ? System.out.println("b=" + b); if (n==0 || b) // matAdja2[position][i]==0 || taboo[i]voici ce que me donner comme erreur:
matAdja2.length=6
position=0
tmp.length=6
i=0
n=0
taboo.length=1
i=0
b=true
matAdja2.length=6
position=0
tmp.length=6
i=1
n=1
taboo.length=1
i=1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at modeleGraphe.Graphe.explore(Graphe.java:125)
at testMonGraphe.TestMonGraphe.main(TestMonGraphe.java:36)
le pb resiste encore