O que causa um java.lang.ArrayIndexOutOfBoundsException e como posso evitá-lo?

O que significa "ArrayIndexOutOfBoundsException" e como me livro dela?

Aqui está uma amostra de código que aciona a exceção:

String[] name = { "tom", "dick", "harry" };
for (int i = 0; i <= name.length; i++) {
    System.out.println(name[i]);
}
Solução

O seu primeiro porto de escala deve ser a [documentação][1], o que o explica de forma razoavelmente clara:

Atirado para indicar que um array foi acessado com um índice ilegal. O índice é negativo ou maior ou igual ao tamanho do array.

Então, por exemplo:

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

Quanto a como evitá-lo... um, don'não faça isso. Tenha cuidado com os seus índices de matriz.

Um problema que as pessoas às vezes encontram é pensar que as matrizes são indexadas a 1, por exemplo


int[] array = new int[5];
// ... populate the array here ...
for (int index = 1; index 
Comentários (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];
}

Vê também:

  • [Os Tutoriais Java - Noções Básicas da Linguagem - Arrays][1]

*Atualização**: de acordo com o seu código snippet,


for (int i = 0; i
Comentários (0)

Isso significa que você está tentando acessar um índice de um array que não é válido, pois não está entre os limites.

Por exemplo, isto inicializaria uma matriz inteira primitiva com o limite superior 4.

int intArray[] = new int[5];

Os programadores contam a partir de zero. Então isto, por exemplo, lançaria um "ArrayIndexOutOfBoundsException", já que o limite superior é 4 e não 5.

intArray[5];
Comentários (2)