Voici mon code:
int myArray[]={1,2,3,4,5,6,7,8};
for(int counter=myArray.length; counter > 0;counter--){
System.out.println(myArray[counter]);
}
Je voudrais imprimer le tableau dans l'ordre décroissant, au lieu de l'ordre croissant (du dernier élément du tableau au premier), mais je viens de recevoir cette erreur:
Exception in thread "main" Java.lang.ArrayIndexOutOfBoundsException: 8
at task1.main(task1.Java:14)
Pourquoi cela arrive-t-il? J'espérais qu'en utilisant myArray.length pour mettre le compteur à 8, le code ne ferait qu'imprimer le 8ème élément du tableau, puis continuerait à imprimer celui d'avant.
Les tableaux en Java sont indexés de 0
à length - 1
, et non de 1
à length
. Par conséquent, vous devez affecter votre variable en conséquence et utiliser l'opérateur de comparaison correct.
Votre boucle devrait ressembler à ceci:
for(int counter=myArray.length - 1; counter >= 0;counter--){
utiliser myArray.length-1
for(int counter=myArray.length-1; counter >= 0;counter--){
System.out.println(myArray[counter]);
}
Le problème ici est ce morceau de code: myArray.length
. En Java, comme dans la plupart des langages, les structures de données sont basées sur 0. Le dernier élément a donc un index de structure.length - 1
(et le premier étant 0
). Donc, dans votre cas, vous devriez changer votre boucle comme suit:
for(int counter=myArray.length - 1; counter >= 0;counter--){
System.out.println(myArray[counter]);
}
Vous commencez au mauvais index. Fais-le comme ça:
for(int counter= myArray.length - 1; counter >= 0;counter--) {
Le dernier index d'un tableau est sa longueur moins 1.
le compteur commence à l'index de myArray.length qui est en réalité compté à partir de 1 au lieu de 0 ..
for(int counter=myArray.length - 1; counter > 0; counter--){
int myArray[]={1,2,3,4,5,6,7,8};
Ici, la longueur du tableau étant 8, le compte commence à 1 mais arrive pour l'index myArray[0] = 1;
.__ et ainsi de suite ... ici le compte d'index commence à 0 .
for(int counter = myArray.length - 1; counter >= 0; counter--) {
sort de la limite du tableau donc il vous montre ArrayIndexOutOfBoundsException
.