Wat veroorzaakt een java.lang.ArrayIndexOutOfBoundsException en hoe voorkom ik het?

Wat betekent ArrayIndexOutOfBoundsException en hoe kom ik er vanaf?

Hier is een code voorbeeld dat de exceptie triggert:

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

Uw eerste aanloophaven zou de [documentatie][1] moeten zijn, die het redelijk duidelijk uitlegt:

Wordt gegooid om aan te geven dat een array is benaderd met een illegale index. De index is ofwel negatief ofwel groter dan of gelijk aan de grootte van de array.

Dus bijvoorbeeld:

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

En hoe je het kunt vermijden... eh, doe dat niet't. Wees voorzichtig met je array indexen.

Een probleem waar mensen soms tegenaan lopen is denken dat arrays 1-geïndexeerd zijn, bijv.


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

Zie ook:

  • [The Java Tutorials - Language Basics - Arrays][1]

Update: volgens uw code snippet,


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

Dit betekent dat u probeert een index van een array te benaderen die niet geldig is omdat hij niet tussen de grenzen ligt.

Dit zou bijvoorbeeld een primitieve integer array initialiseren met de bovengrens 4.

int intArray[] = new int[5];

Programmeurs tellen vanaf nul. Dus dit zou bijvoorbeeld een ArrayIndexOutOfBoundsException opleveren omdat de bovengrens 4 is en niet 5.

intArray[5];
Commentaren (2)