ArrayIndexOutOfBoundsException al iterar a través de todos los elementos de una matriz

cómo manejar esta excepción “ArrayIndexOutOfBoundsException” mi código: creo una matriz de 64 de longitud, luego intializo cada índice, luego imprimí los índices para asegurarme de que llené todos los índices, pero se imprimió hasta 63 y luego se da la excepción !! alguna idea

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); } } 

Los índices de matriz en Java comienzan desde 0 y van a array.length - 1 . Así que cambie el bucle a for(int i=0;i

Los índices comienzan desde 0, por lo que el último índice es 63. Cambie su ciclo for de esta manera:
for(int i=0;i

Ver los JLS-Arrays :

Si una matriz tiene n componentes, decimos que n es la longitud de la matriz; los componentes de la matriz se referencian usando índices enteros de 0 a n – 1, inclusive.

Entonces debes iterar a través de [0,length()-1]

 for(int i=0;i 

¿Necesita una explicación completa? Lee esto

El índice de una matriz siempre comienza desde 0 . Por lo tanto, como tiene 64 elementos en su matriz, sus índices serán de 0 to 63 . Si desea acceder al 64º elemento, tendrá que hacerlo con a[63] .

Ahora, si miramos su código, entonces ha escrito su condición para ser for(int i=1;i< =a.length;i++) aquí a.length le devolverá la longitud real de la matriz que es 64.

Dos cosas están sucediendo aquí:

  1. Cuando comienzas el índice desde 1, es decir, i=1 estás salteando el primer elemento de tu matriz que estará en el 0th índice.
  2. En el último, está intentando acceder al elemento a[64] que saldrá a ser el 65th elemento de la matriz. Pero su matriz contiene solo 64 elementos. Así obtienes ArrayIndexOutOfBoundsException .

La forma correcta de iterar una matriz con for loop sería:

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

El índice comienza desde 0 y va a < array.length .

En las matrices de Java siempre comienzan en el índice 0. Por lo tanto, si desea que el último índice de una matriz sea 64, la matriz debe ser del tamaño 64 + 1 = 65.

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

Puede corregir su progtwig de esta manera:

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

Has hecho mal tus cálculos. Las matrices comienzan a contar a 0. Eg int [] d = new int [2] es una matriz con los recuentos 0 y 1.

Debe establecer su número entero ‘i’ en un valor de 0 en lugar de 1 para que esto funcione correctamente. Como comienzas en 1, tu bucle for cuenta más allá de los límites de la matriz y te da una ArrayIndexOutOfBoundsException.