Obtenir un IndexOutOfBoundsException: index: 1, taille: 1 erreur lorsque vous essayez d'obtenir null index
Je travaille sur un projet où, si deux objets sont de la même classe, un nouvel objet de ce type est insérée dans un échantillon aléatoire null indice d'un tableau d'objets de ce type. L'null index ne doit pas être répété.
De se procurer les indices d'où le tableau d'origine a des valeurs null(pas d'objets), d'abord j'ai ajouté de la valeur null index, mélangés entre eux et vérifier si elles sont un instanceof un objet et, dans l'affirmative, un nouvel objet de ce type est ajouté à la non répétition aléatoire null index du tableau original. Je l'ai fait:
List<Integer> nullIndexes = new ArrayList<>();
for(int i = 0; i < original.length; i++)
{
if(original[i] == null)
nullIndexes.add(i);
}
Collections.shuffle(nullIndexes);
int index = nullIndexs.get(1);
if(original[0] instanceof Cat)
original[index] = new Cat();
if(original[0] instanceof Dog)
original[index] = new Dog();
Mais presque à chaque fois que je lance le programme, j'obtiens le ci-dessous exception et ne peux pas comprendre pourquoi:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at proj2sp16.Proj2App.main(Proj2App.java:437)
- comment avez-vous initialisé la variable "j"? (utilisé dans la déclaration nullIndexes.ajouter(j);)
Vous devez vous connecter pour publier un commentaire.
Ressemble
nullIndexs
a qu'une seule valeur.Java utilise à zéro, selon les listes.
Vous devez vérifier la taille avant d'accéder à l'élément à l'index un:
ou si vous voulez Accéder au premier élément que vous devez utiliser
Indice est démarré à partir de
0
, donc, si la taille de la matrice est un, alors vous pouvez utiliser l'index0
pour obtenir le premier élément du tableauLa vérification de la longueur de la liste avant de procéder est toujours une meilleure façon de code.
L'exception est auto-explicatif -
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
.En java
IndexOutOfBoundException
se produit lorsque vous avez essayé d'accéder à un indice qui n'est pas exister.ArrayList
index commence à partir de 0. Donc, si vous voulez le premier résultat vous avez besoin pour effectuer une recherche par 0.Vous pouvez vérifier la taille d'une liste de tableaux par
arraylist.size()
méthode. Vous pouvez également consulter une liste si elle est vide ou non pararraylist.isEmpty()
méthode