j'ai ce bout de code à chaque que je l'exécute une erreur du type (Array out of bounds ) s'affiche après la 4eme à la 5eme itération
l'erreur m'échappe et j'arrive à la localiser peut être lorsque vous voyez le code vous la détecterez .SVP aidez moi .Merci
voici la fonction :
void fonction (int i,int j){
int h=0;
if (laby[i][j].equals("s")){System.out.println("soooooooooooooooor");}
else{laby[i][j]="p";
System.out.println(laby[i][j]+" "+i +" "+j);
while((i>0)&&(j>0)&&(i<=19)&&(j<=19)&&(!sortie))
{
remplir_voisin(i,j);
while ((voisins[h].equals("m"))||(voisins[h].equals("p"))) {h++; }
String val = voisins[h];
int indice = h;
if (val.equals("s")){sortie=true;}
else
{if (indice==0){j=j-1;}
else{if (indice==1){i=i-1;}
else{if (indice==2){j=j+1;}
else{if (indice==3){i=i+1;}}}}
laby[i][j]="p";
System.out.println(laby[i][j]+" "+i +" "+j);}
}}}
public static String[] voisins={"","","",""};
et voici la fonction
void remplir_voisin (int i, int j){
voisins[0]=laby[i][j-1];
voisins[1]=laby[i-1][j];
voisins[2]=laby[i][j+1];
voisins[3]=laby[i+1][j];
}
KX
Messages postés16733Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 janvier 20243 013 27 nov. 2011 à 11:36
Bien sûr, tu fais while ((voisins[h].equals("m"))||(voisins[h].equals("p"))) {h++; } Tu n'as aucun contrôle sur h alors qu'il ne doit en aucun cas dépasser voisins.length...
Essaye ce code qui effectue le contrôle :
while (h<voisins.length && (voisins[h].equals("m") || voisins[h].equals("p"))
h++;
Enfin...tellement le débit est faible je n'arrive même pas à ajouter un commentaire .Anyway merci bcp de m'avoir répondu KX mais le problème c'est que j'ai déjà essayé ce que vous m'avez proposé plusieurs fois mais ça n'a pas marché moi aussi je croyais que c'était un problème de length mais finalement non c'est pas ça... :((((
KX
Messages postés16733Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 janvier 20243 013 27 nov. 2011 à 14:56
Si l'erreur est sur cette ligne, ça ne peut rien à être d'autre !
Ou alors h<0 mais tu n'aurais pas Array Index Out Of Bounds Exception : 4 Je suppose que 4 c'est la valeur de voisins.length...
non c'est pas ca parceque y a qlq1 qui a eu le meme probleme avec le meme msg d'erreur alors que la taille de son tableau = 6...ffffffff je vois pas du tout le probleme :(((
KX
Messages postés16733Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 janvier 20243 013 27 nov. 2011 à 15:55
Si la taille du tableau est 6 tu ne peux pas avoir Array Index Out Of Bounds Exception à 4.
C'est pour ça que j'ai précisé si l'erreur est sur cette ligne, ce dont je commence à douter...
Re,
c'est bon j'ai trouvé le probleme: supponsons que le "p" ou le "s" que je cherche se trouve dans la derniere case du table "voisins" d'aprés mon code il va quand meme incrémenter le h ce qui fait h := 4 > length,donc effectivement c'était un pb de taille ;)