350 votes

Qu'est-ce qui provoque une exception java.lang.ArrayIndexOutOfBoundsException et comment puis-je l'éviter ?

Qu'est-ce que ArrayIndexOutOfBoundsException et comment s'en débarrasser ?

Voici un exemple de code qui déclenche l'exception :

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

1 votes

En ce qui concerne la dernière question, un code serait utile. Accédez-vous au tableau avec un index connu, ou devez-vous commencer à déboguer pour comprendre comment l'index est calculé lorsque l'erreur se produit ?

49 votes

Remplacer i <= name.length con i < name.length - ou mieux, écrire une boucle for améliorée. ( for (String aName : name) { ... } )

2 votes

Cela signifie que vous voulez obtenir un élément du tableau qui n'existe pas, 'i<=name.length' signifie que vous voulez obtenir l'élément length+1 - qui n'existe pas.

-2voto

Jaykumar Points 23

Ici 0--> tom , 1-->bob ,2-->harry .mais il n'y a pas d'indice pour 3. Ici, la valeur de names.length es 3 . Donc par la boucle for vous accédez à l'index 3. Donc, l'erreur arrive. Il suffit de changer

String[] names = { "tom", "bob", "harry" };
for (int i = 0; i <= names.length -1 ; i++) {
    System.out.println(names[i]);
}

pour éviter

ArrayIndexOutOfBoundsException

-4voto

Kevin7 Points 553

Vous ne pouviez pas itérer ou stocker plus de données que la longueur de votre tableau. Dans ce cas, vous pourriez faire comme ceci :

for (int i = 0; i <= name.length - 1; i++) {
    // ....
}

Ou ça :

for (int i = 0; i < name.length; i++) {
    // ...
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X