web-dev-qa-db-fra.com

Boucler en arrière dans les éléments d'un tableau

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.

9
JimmyK

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--){
52
Tim Cooper
  • Le premier index est 0 et le dernier index est 7 et non 8 
  • La taille du tableau est de 8
4
VirtualTroll

utiliser myArray.length-1

  for(int counter=myArray.length-1; counter >= 0;counter--){
                System.out.println(myArray[counter]);
            }
3
Õzbek

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]);
        }
3
npinti

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.

2
fivedigit

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--){
2
smassey

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.

0
Sriram Pushpak