¿Qué causa una java.lang.ArrayIndexOutOfBoundsException y cómo la evito?

¿Qué significa ArrayIndexOutOfBoundsException y cómo puedo deshacerme de ella?

Aquí hay un ejemplo de código que desencadena la excepción:

String[] name = { "tom", "dick", "harry" };
for (int i = 0; i <= name.length; i++) {
    System.out.println(name[i]);
}
Solución

Su primer puerto de escala debería ser la [documentación][1] que lo explica de forma razonablemente clara:

Se lanza para indicar que se ha accedido a un array con un índice ilegal. El índice es negativo o mayor o igual que el tamaño del array.

Así, por ejemplo:

int[] array = new int[5];
int boom = array[10]; // Throws the exception

En cuanto a cómo evitarlo... um, no lo hagas. Ten cuidado con los índices de tus arrays.

Un problema con el que a veces se encuentra la gente es pensar que los arrays están indexados en 1, por ejemplo


int[] array = new int[5];
// ... populate the array here ...
for (int index = 1; index 
Comentarios (1)
if (index < 0 || index >= array.length) {
    // Don't use this index. This is out of bounds (borders, limits, whatever).
} else {
    // Yes, you can safely use this index. The index is present in the array.
    Object element = array[index];
}

Ver también:

  • [Los tutoriales de Java - Fundamentos del lenguaje - Arrays][1]

Actualización: según su fragmento de código,


for (int i = 0; i
Comentarios (0)

Significa que estás intentando acceder a un índice de un array que no es válido porque no está entre los límites.

Por ejemplo, esto inicializaría un array de enteros primitivos con el límite superior 4.

int intArray[] = new int[5];

Los programadores cuentan desde cero. Así que esto, por ejemplo, lanzaría una ArrayIndexOutOfBoundsException ya que el límite superior es 4 y no 5.

intArray[5];
Comentarios (2)