ArrayIndexOutOfBoundsException beim Iterieren aller Elemente eines Arrays

Wie handle ich mit dieser Ausnahme “ArrayIndexOutOfBoundsException” Mein Code: Ich erstelle ein Array von 64 Länge, dann initialisiere ich jeden Index und drucke dann die Indizes, um sicherzustellen, dass ich alle Indizes ausfülle, aber bis zu 63 gibt dann die Ausnahme !! irgendeine Idee

public static void main(String [] arg) { int [] a=new int [64]; for(int i=1;i<=a.length;i++){ a[i]=i; System.out.println(i); } } 

   

Die Array-Indizes in Java beginnen bei 0 und gehen auf array.length - 1 . Also ändere die Schleife in for(int i=0;i

Die Indizes beginnen bei 0 und der letzte Index ist 63. Ändern Sie Ihre for-Schleife wie folgt:
for(int i=0;i

Siehe die JLS-Arrays :

Wenn ein Array n Komponenten hat, sagen wir, n ist die Länge des Arrays; Die Komponenten des Arrays werden unter Verwendung ganzzahliger Indizes von 0 bis einschließlich n – 1 referenziert.

Du musst also durch [0,length()-1] iterieren

 for(int i=0;i 

Brauchen Sie vollständige Erklärung? Lesen Sie dies

Der Index eines Arrays beginnt immer bei 0 . Wenn Sie also 64 Elemente in Ihrem Array haben, werden ihre Indizes von 0 to 63 . Wenn Sie auf das 64. Element zugreifen möchten, müssen Sie es mit a[63] tun.

Wenn wir nun Ihren Code betrachten, haben Sie Ihre Bedingung for(int i=1;i< =a.length;i++) a.length gibt Ihnen die tatsächliche Länge des Arrays zurück, also 64.

Zwei Dinge passieren hier:

  1. Wenn Sie den Index von 1 starten, dh i=1 , überspringen Sie also das allererste Element Ihres Arrays, das sich auf dem 0th Index befindet.
  2. Im letzten versucht es, auf das a[64] -Element zuzugreifen, das a[64] 65th Element des Arrays herauskommen wird. Aber Ihr Array enthält nur 64 Elemente. Daher erhalten Sie ArrayIndexOutOfBoundsException .

Der richtige Weg, um ein Array mit for-Schleife zu iterieren, wäre:

for(int i=0;i < a.length;i++)

Der Index beginnt bei 0 und geht bis < array.length .

In Java beginnen Arrays immer bei Index 0. Wenn also der letzte Index eines Arrays 64 sein soll, muss das Array die Größe 64 + 1 = 65 haben.

 // start length int[] myArray = new int [1 + 64 ]; 

Sie können Ihr Programm auf diese Weise korrigieren:

 int i = 0; // Notice it starts from 0 while (i < a.length) { a[i]=i; System.out.println(i++); } 

Du hast deine Mathe falsch gemacht. Arrays beginnen bei 0 zu zählen. ZB int [] d = new int [2] ist ein Array mit counts 0 und 1.

Sie müssen Ihre Ganzzahl ‘i’ auf einen Wert von 0 und nicht 1 setzen, damit dies richtig funktioniert. Da Sie bei 1 beginnen, zählt Ihre for-Schleife über die Grenzen des Arrays hinaus und gibt Ihnen eine ArrayIndexOutOfBoundsException.