Laufzeitfehler erkennen

Studi123

Mitglied
Hallo!
Bereite mich gerade für die Uni für eine Klausur in Java vor und komme hier bei einer Aufgabe einfach nicht weiter:

attachment.php


[Java]public class Ausgeben {

public static void main(String[] args){
System.out.println(join(args, ","));
}

private static String join(String[] array, String seperator){
String verknuepft;
verknuepft = array[0];
for (int i = 1; i <= array.length; ++i)
verknuepft += seperator + array;
return verknuepft;
}
}
[/Java]

Wenn ich das Aufrufe spuckt mir Eclipse folgendes aus:

Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
	at Ausgeben.join(Ausgeben.java:7)
	at Ausgeben.main(Ausgeben.java:12)

Wo liegt der Fehler? Habe natürlich die Parameter in Eclipse extra angegeben..
 

Anhänge

  • Bildschirmfoto 2014-07-22 um 08.40.37.jpg
    Bildschirmfoto 2014-07-22 um 08.40.37.jpg
    80 KB · Aufrufe: 58
Zuletzt bearbeitet:
Hi,
Die Exception:
Java:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
sagt aus, dass du versucht hast, auf ein Element im Array zuzugreifen, das nicht existiert, bzw. dass du ausserhalb des Array einen Zugriff machen woltest.

Ein Tip:
Arrays beginnen in Java, C#, C++ etc. mit index 0...
also ist das letzte Element vom Array: array.length-1.
Ändere den for loop so ab, dass das letzte element array.length-1 ist, also
Java:
for (int i = 1; i < array.length; ++i) {
....
}
oder
Java:
for (int i = 1; i <= array.length-1; ++i) {
...
}
 
Zuletzt bearbeitet:
Ist aber ne ganz typische Stelle, das man in einer Schleife zu weit läuft. Also für die Prüfung solltest du dir auf jeden Fall merken, das du sofort alle Schleifenköpfe checkst, wenn die Aufgabe irgendwas mit "Laufzeitfehler" heist. 😉

Im übrigen könnte man noch einen Laufzeitfehler diagnostizieren, da im Programm davon ausgegangen wird, dass args[0] belegt ist.
Man könnte das Programm ja auch ohne Parameter aufrufen. Dann bekommst du in Zeile 9 auch eine IndexOutOfBoundsException, weil es das Element 0 in einem leeren Array nicht gibt.

Ist in der Aufgabe nicht gefordert, aber auf jeden Fall eine Schwäche im Programm, derer man sich bewusst sein sollte.
 
Zuletzt bearbeitet:

Zurück
Oben