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

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

王林
王林original
2023-08-18 22:48:336836parcourir

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异常

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;  // 正确的索引赋值
  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异常

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);  // 正确的访问
}
  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++) {
    // 访问数组元素
}

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) {
    // 访问数组元素
}

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!

Déclaration:
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