L'ordre des conditions dans une boucle While et java.lang.ArrayIndexOutOfBoundsException:
Bonjour à tous,
J'utiliser Java 8 avec Netbeans 8.2.
J'étais en train de coder une simple tri par insertion. et j'ai un problème qui me tracasse depuis le début de cet après midi.
Voila mon code fonctionne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public static void trier(int [] t){
int swap;
int j;
//int j = 0;
for (int i= 1; i < t.length ; i++){
// on sauvegarde la valeure ) insérer
swap = t[i];
j = i -1;
while( (j >= 0) && (swap < t[j])){
t[j+1] = t[j];
j--;
}
t[j+1] = swap;
}// end for
}// endtrier() |
Cela fonctionne très bien mais j'ai eu de gros soucis avec cette partie là :
Code:
while( (j >= 0) && (swap < t[j])){
Au départ je faisait plutot ce test
Code:
while( (swap < t[j]) && (j >= 0) ){
et là patatra j'ai le fameux
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
Et là je ne comprend pas ...
J'ai perdu une demi journée sur ça ...
Est ce quelqu'un pourrais m'expliquer ?