Immer eine IndexOutOfBoundsException: index: 1, size: 1 Fehler beim Versuch, die null-Indizes
Arbeite an einem Projekt, wo, wenn zwei Objekte der gleichen Klasse, wird ein neues Objekt von diesem Typ ist eingefügt in eine random null-index ein Objekt-array von diesem Typ. Die null-Indizes sollten nicht wiederholt werden.
Zu Holen Sie sich die aktuellen Indizes auf, wo die original-array auch null-Werte(keine Objekte), zuerst habe ich die null-Indizes, schlurfte Sie und überprüft, ob Sie ein instanceof-ein Objekt, und wenn ja, wird ein neues Objekt von diesem Typ wird Hinzugefügt, um die nicht zu wiederholen random null-index des original-array. Ich habe diese:
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();
Aber fast jedesmal, wenn ich das Programm starte, erhalte ich die unten Ausnahme und kann nicht herausfinden, warum:
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)
- wie hast du Sie initialisiert die variable 'j'? (in der Anweisung verwendet nullIndexes.add(j);)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie
nullIndexs
hat nur einen Wert.Java verwendet null basierende Listen.
Sie haben die Größe überprüfen, bevor der Zugriff auf das element mit dem index eins:
oder wenn Sie wollen, um Zugriff auf das erste element, das Sie verwenden,
Index gestartet wird
0
, so dass, wenn die array-Größe ist, dann können Sie die index -0
um das erste element des ArraysÜberprüfung der Länge der Liste, bevor Sie fortfahren, ist immer ein besserer Weg, um code.
Ausnahme ist selbsterklärend -
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
.In java
IndexOutOfBoundException
tritt auf, wenn Sie versucht, Zugriff auf einen index, der nicht existiert.ArrayList
index beginnt bei 0. Wenn Sie So wollen, das erste Ergebnis Sie brauchen, to Suche durch 0.Sie können die Größe einer arraylist von
arraylist.size()
Methode. Sie können auch überprüfen Sie die Liste, ob es leer ist oder nicht, indemarraylist.isEmpty()
Methode