Unerklärliche IndexOutOfBoundsException

DerSophist

Mitglied
Ich habe folge Methode:
Java:
private static void shortArrayList() {
    for (int i = Array1.size() - 1; i >= 0; i--) {
        for (int j = Array1.get(i).size() - 1; j >= 0; j--) {
            if (i != Array1.size() - 1) {
                    if (Array1.get(i).get(j) + 100 < Array1.get(i + 1).get(0)) {     //in dieser Zeile kommt es zum Error
                        Array1.get(i).remove(j);
                    }
            } else {
                if (Array1.get(i).get(j) + 100 < 400) {
                    Array1.get(i).remove(j);
                }
            }
        }
    }
}
Hierbei handelt es sich um eine ArrayList, bei der bestimmte Elemente entfernt werden sollen. Ich bin mir ziemlich sicher das bessere Lösungen gibt, das Problem zu lösen, aber:
Warum bekomme ich manchmal (nicht bei jeder ArrayList) eine IndexOutOfBoundsException, die folgendermaßen aussieht:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at com.company.Main.shortArrayList(Main.java:97)
at com.company.Main.main(Main.java:33)

Was ist der Grund dafür, weil ich eigentlich nie ein Array habe, das die size 0 hat???
 

QU3LLC0D3

Mitglied
Also es sieht so aus, als wenn es eine ArrayList in einer ArrayList ist... aber da wir das nicht genau wissen, was du da reingibst, ist es schwierig darauf eine Antwort zu geben.

Das ist also deine Liste... Nehmen wir an, sie enthält 1 Element. Das wäre dann "size - 1" was 0 ist...

wenn also i = 0 ist fragst du weiter: Wenn 0 != 1-1 ist (also 0 != 0 = false) ...
if (i != Array1.size() - 1)

dann versuchst du im weiteren Verlauf auf Array1 Element 0+1 zuzugreifen - und das ist deine Exception
Array1.get(i + 1)
 

CSHW89

Bekanntes Mitglied
QU3LLC0D3: Du sagst aber selber, dass in diesem Fall, die Bedingung false ist. Dann wird "Array1.get(i + 1)" nicht ausgeführt.

@TE: Das Problem ist folgendes. Du löscht aus dem i-ten Array Elemente (sagen wir i = 5). Wenn i nun dekrementiert wird (i = 4), prüfst so gegen das 5. Array. Dieses kann durch das Löschen aber inzwischen leer sein, selbst wenn es zu Anfang noch nicht leer war. Dann führt "Array1.get(i + 1).get(0)" zum Fehler.

Viele Grüße
Kevin
 

Phash

Top Contributor
Java:
 if (Array1.get(i).get(j) + 100 < Array1.get(i + 1).get(0))

du hast eine innere und eine äußere Liste.
du prüfst die innere Liste nicht ab und fliegst deswegen raus.
Wenn ich es debugge, werden in der letzten Liste immer Einträge entfernt:
Java:
 Array1.get(i).remove(j);
Deswegen ist die letzte Liste bei mir leer, und wenn du mit
Array1.get(i + 1).get(0)
Java:
Array1.get(i + 1).get(0)
drauf zugreifst, langst du ins Leere

Als Tipp: mach weniger in deiner Methode! Die ist so komplex aufgebaut, dass man sie nicht direkt versteht.
und mach es mit Tests. Schreib dir mal einen Ausganswert und einen Endwert, den du erwartest, als Unit Test, und schreib deine Methode Testgetrieben. Dann ersparst du dir die debuggerei
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Methoden Unerklärliche Error Meldung Java Basics - Anfänger-Themen 3
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
L Unerklärliche NullPointerException Java Basics - Anfänger-Themen 9
I Unerklärliche Null-Pointer-Exception bei JRadioButton Array Java Basics - Anfänger-Themen 2
C Unerklärliche IndexOutOfBounds - Exception Java Basics - Anfänger-Themen 6
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
V Compiler-Fehler Warum eine IndexOutOfBoundsException? Java Basics - Anfänger-Themen 3
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
S Methoden Bei Liste als Rückgabewert: IndexOutOfBoundsException Java Basics - Anfänger-Themen 1
H java.lang.IndexOutOfBoundsException bei verschachtelter ArrayList Java Basics - Anfänger-Themen 9
P Problem mit IndexOutOfBoundsException Java Basics - Anfänger-Themen 11
K Compiler-Fehler IndexOutOfBoundsException bei ArrayList Java Basics - Anfänger-Themen 2
R IndexOutOfBoundsException bei ArrayList Java Basics - Anfänger-Themen 2
K Fehlermeldung: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 Java Basics - Anfänger-Themen 4
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M ArrayList, String Array und IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
S IndexOutofBoundsException bei linkedlist Java Basics - Anfänger-Themen 5
M java.lang.IndexOutOfBoundsException weiß nicht warum Java Basics - Anfänger-Themen 8
R IndexOutOfBoundsException bei Listen Java Basics - Anfänger-Themen 7
Student Transponieren von 2 Arrays - IndexOutOfBoundsException Java Basics - Anfänger-Themen 15
G Wo ist mein Fehler (IndexOutOfBoundsException)? Java Basics - Anfänger-Themen 3
P Problems with IndexOutOfBoundsException Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben