Die Elemente in einem Array rückwärts durchlaufen [duplizieren]

7

Hier ist mein Code:

%Vor%

Ich möchte das Array in absteigender Reihenfolge ausgeben, anstatt in aufsteigender Reihenfolge (vom letzten Element des Arrays zum ersten), aber ich bekomme nur diesen Fehler geworfen:

%Vor%

Warum passiert das? Ich hatte gehofft, dass durch die Verwendung von myArray.length, um den Zähler auf 8 zu setzen, der Code nur das achte Element des Arrays ausdrucken würde und dann den vorherigen drucken würde.

    
JimmyK 21.02.2012, 14:44
quelle

7 Antworten

44

Arrays in Java werden von 0 bis length - 1 , nicht 1 bis length indiziert, daher sollten Sie Ihre Variable entsprechend zuweisen und den richtigen Vergleichsoperator verwenden.

Ihre Schleife sollte so aussehen:

%Vor%     
Tim Cooper 21.02.2012, 14:45
quelle
4
  • Der erste Index ist 0 und der letzte Index ist 7 nicht 8
  • Die Größe des Arrays ist 8
VirtualTroll 21.02.2012 14:45
quelle
3

Das Problem hier ist dieses Stück Code: myArray.length . In Java sind Datenstrukturen wie in den meisten anderen Sprachen 0-basiert. Das letzte Element hat also einen Index von structure.length - 1 (und das erste ist 0 ). In Ihrem Fall sollten Sie Ihre Schleife wie folgt ändern:

%Vor%     
npinti 21.02.2012 14:46
quelle
2

Der Zähler beginnt am Index von myArray.length, der tatsächlich von 1 statt von 0 gezählt wird.

%Vor%     
smassey 21.02.2012 14:46
quelle
2

verwende myArray.length-1

%Vor%     
Õzbek 21.02.2012 14:46
quelle
2

Sie beginnen mit dem falschen Index. Mach es so:

%Vor%

Der letzte Index eines Arrays ist die Länge minus 1.

    
fivedigit 21.02.2012 14:45
quelle
0

int myArray[]={1,2,3,4,5,6,7,8};

Hier ist die angegebene Array-Länge 8, da die Zählung bei 1 beginnt, aber für den Index myArray[0] = 1; kommt. und so weiter .... hier beginnt die Indexzählung bei 0. Also in deinem Stück Code

%Vor%

verlässt die Array-Grenze und zeigt Ihnen ArrayIndexOutOfBoundsException .

    
Sriram Pushpak 29.09.2016 01:03
quelle

Tags und Links