Maison > Java > javaDidacticiel > Solution à l'exception d'index de données Java (IndexOutOfBoundsException)

Solution à l'exception d'index de données Java (IndexOutOfBoundsException)

王林
Libérer: 2023-08-18 22:48:33
original
6840 Les gens l'ont consulté

Solution à lexception dindex de données Java (IndexOutOfBoundsException)

Solution à l'exception d'index de données Java (IndexOutOfBoundsException)

Introduction :
En programmation Java, lorsqu'un élément de tableau inexistant est accédé ou que l'index de la collection est hors de portée, une exception IndexOutOfBoundsException sera levée. C'est une erreur courante que de nombreux débutants rencontrent souvent. Cet article explique comment éviter et résoudre l'exception IndexOutOfBoundsException avec quelques solutions simples.

  1. Calcul de l'indice incorrect
    Tout d'abord, nous voulons vérifier l'exactitude du calcul de l'indice. Dans de nombreux cas, les exceptions IndexOutOfBoundsException sont provoquées par des erreurs de calcul d’index.

Exemple de code 1 :

int[] array = new int[5];
int index = 5;
array[index] = 10;  // 此处抛出IndexOutOfBoundsException异常
Copier après la connexion

Dans le code ci-dessus, nous avons créé un tableau d'entiers de longueur 5, mais lorsque nous essayons d'attribuer une valeur à l'élément d'index 5, une exception IndexOutOfBoundsException est levée. En effet, l'index d'un tableau est calculé à partir de 0, la plage d'index valide du tableau doit donc être comprise entre 0 et 4. Résoudre ce problème nécessite simplement de calculer correctement l'indice.

Exemple de code 2 :

int[] array = new int[5];
int index = 4;
array[index] = 10;  // 正确的索引赋值
Copier après la connexion
  1. Jugement non vide
    Lorsque vous utilisez une collection ou une structure de données à croissance dynamique, vous devez d'abord juger si elle est nulle ou si suffisamment d'éléments ont été ajoutés. Sinon, IndexOutOfBoundsException peut être levée en raison d'un accès hors limites.

Exemple de code 3 :

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
int index = 2;
int value = list.get(index);  // 此处抛出IndexOutOfBoundsException异常
Copier après la connexion

Dans le code ci-dessus, nous avons créé une ArrayList vide et essayé d'obtenir la valeur de l'élément d'index 2, mais comme il n'y a que deux éléments, accéder à l'élément d'index 2 renvoie An Une exception IndexOutOfBoundsException se produit. Pour résoudre ce problème, vous pouvez déterminer la taille ou la longueur de la collection avant d'y accéder.

Exemple de code 4 :

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
int index = 1;
if (index < list.size()) {
    int value = list.get(index);  // 正确的访问
}
Copier après la connexion
  1. Contrôle de boucle
    Lors de l'utilisation d'une boucle, vous devez vous assurer que l'index ne dépasse pas la plage valide du tableau ou de la collection. Il existe généralement deux façons d'éviter l'exception IndexOutOfBoundsException :

Méthode 1 : contrôle de boucle for :

for (int i = 0; i < array.length; i++) {
    // 访问数组元素
}
Copier après la connexion

Lors de l'utilisation d'une boucle for, contrôlez le nombre de boucles en utilisant la longueur du tableau ou de la collection pour vous assurer qu'elle ne dépasse pas la plage de l’indice.

Méthode 2 : contrôle de boucle foreach :

for (int value : array) {
    // 访问数组元素
}
Copier après la connexion

Lorsque vous utilisez une boucle foreach, vous n'avez pas besoin de vous soucier de la plage de l'index, car la couche sous-jacente a déjà rendu des jugements pertinents, il n'y aura donc pas d'exception IndexOutOfBoundsException.

Pour résumer, grâce à un calcul d'index correct, un jugement non nul et un contrôle de boucle, nous pouvons éviter et résoudre l'exception IndexOutOfBoundsException en Java. Ces solutions simples peuvent améliorer la robustesse et la lisibilité de notre code, et peuvent également nous aider à mieux localiser et corriger les erreurs. Pour les développeurs de programmes Java, la maîtrise de ces compétences est très importante pour améliorer la qualité et l'efficacité du code.

Références :

  • https://docs.oracle.com/en/java/javase/14/names-indexes-for-td-tables.html
  • https://www.geeksforgeeks.org/indexoutofboundsexception - en-java-avec-exemples/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal