Laufzeitfehler

Zeeper

Mitglied
Hallo Leute, bin neu hier im Forum und habe eine Frage.
Ich habe hier einen Code bekommen aus dem ich dem Laufzeit Fehler finden darf. Ich muss ehrlich gestehen, dass ich mich mit dem Thema bis jetzt nicht auseinader gesetzt habe. Es ist auch ein winziger Code aber ich komme einfach nicht drauf. vielleicht kann mir ja jemand helfen :D
Wäre euch sehr dankbar!

[JAVA=42]
int[] a = new int[128];
for ( int i = 1; i <= a.length; i++ ) {
a = i;
}
[/code]
 

rme

Top Contributor
Beantworte mal folgende Fragen :)

* Wie viele Elemente hat das Array?

* Welche Indizes haben diese?

* Welche Indizes werden innerhalb der Schleife benutzt?
 

rme

Top Contributor
Die ersten beiden sind richtig :)

Die Schleife sieht ja folgendermaßen aus:
Java:
  for ( int i = 1; i <= a.length; i++ )

Allgemein ist eine for-Schleife so aufgebaut:
Java:
for(initialisierung; bedingung; statement) rumpf
"initialisierung" wird einmal bei Beginn der Schleife ausgeführt. Danach passiert folgendes:
1. Prüfe, ob die Bedingung wahr ist, wenn nicht: höre auf
2. Führe den Rumpf aus
3. Führe das Statement aus
4. Gehe zu 1.

Kannst du die letzte Frage nun beantworten? :)
 
Zuletzt bearbeitet:

Zeeper

Mitglied
Hm irgendwie nicht ...:D
Also ich weiß eben nur wie mir der Laufzeitfehler ausgibt, das meine Array Länge außerhalb des Bereichs ist oder? Ich denke das das irgendwas mit dem 127 zu tun haben muss weil Arrays ja bei 0 anfangen.
Und das A1.java:5 sagt mir doch das mein Fehler in der 5. Zeile, also in a = i; stecken muss oder?
Ausgabe:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 128
at A1.main(A1.java:5)

Es muss was minimales sein :D
 

Zeeper

Mitglied
Ist das immer der Fall bei Arrays? also das man bei 0 anfängt und < statt <=
Wieso fängt man bei 0 an und <?
bedeutet das A1.java:5 also wieviel Zeilen mein Programm hauptsächlich besitzt?
 

rme

Top Contributor
Die Ursache des Fehlers ist, dass die Schleife in Zeile 2 deines Beispiels einen ungültigen Index berechnet. Die Folge davon ist, dass in der Zeile danach die Array-Grenze überschritten wird.

Weil die Elemente von 0 bis 127 gehen, lässt man die Schleife bei 0 anfangen und sie so lange laufen, wie der Zähler noch < 128 ist - dann ist 127 nämlich der letzte Wert, mit dem sie noch in den Rumpf geht.
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben