4.5 a) bei aufruf von distance "java.lang.ArrayIndexOutOfBoundsException: 0"

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

4.5 a) bei aufruf von distance “java.lang.ArrayIndexOutOfBoundsException: 0”
Hey, ich habe die a) jetzt (hoffentlich) komplett gelöst, mich hält allerdings der Fehler “java.lang.ArrayIndexOutOfBoundsException: 0” vom testen ab.

Der Fehler kommt an folgender Stelle: Ich rufe die Methode distance() auf und übergebe ihr den Startwert sowie das erste Koordinatenpaar aus ps. Das mache ich mit ps[0].

Ich wüsste gerne woher der Fehler hier kommt, ich kann es selbst gerade nicht nachvollziehen.


ps leer?


Sollte es über meinen Basisfall abfangen… Es sei denn der ist immer noch falsch -.-


Ok hat sich erledigt, Basisfall ist jetzt richtig.


Hm mist :smiley: Mein Code hat für den in der main angegebenen Testfall zwar gestimmt, allerdings kriege ich jetzt an anderer Stelle die selbe Fehlermeldung wenn ich die Testfälle aus dem Forum hier nehme (die bei anderen ja funktionieren).

Der Fehler kommt ein mal bei der Zuweisung eines neuen pd (gebildet aus einem ps[0] mit kleinerer euklidischer Distanz als das alte pd und dieser neuen Distanz, hinzugefügt durch appendDistance) und mehrmals beim rekursiven Aufruf der Methode vor. Mein Basisfall sollte den Fall ps leer nun sicher abfangen, er tritt ein wenn die Länge von ps == 0 ist.

Woran könnte der neue Fehler nun liegen?


Unabhängig von der Aufgabe:

java.lang.ArrayIndexOutOfBoundsException: 0

heißt immer, dass dein Array zwar exisitert (sonst gäbe es eine NullPointerException), aber die Länge 0 ist. Sprich irgendwo passiert z.B. sowas hier:

int[] numbers = new int[0];

oder

int[] numbers = new int[]{};

Und dann versuchst du auf den 0. Eintrag (= erstes Element im Array) zuzugreifen, obwohl überhaupt keine Elemente enthalten sind => Kaboom!


Um Gottes Willen wie ärgerlich… Danke das hat mir echt geholfen, ich hab einfach nur mein skipNextPoint zwei Zeilen zu früh aufgerufen und dadurch auf ein leeres Array zugegriffen… Jetzt klappen alle Testfälle, vielen Dank :slight_smile: Mal wieder verdammt viel Zeit in einen simplen Fehler gesteckt

1 Like