[ERLEDIGT!]java.lang.ArrayIndexOutOfBoundsException
Ich habe den Fehler beheben können. Vielen Dank an dieser Stelle für die schnelle Hilfe.
Hi,
irgendwie funktioniert mein Code nicht richtig - ich könnte also ein wenig Hilfe gebrauchen
Geplant ist, dass eine Breite eingelesen wird (main), und alle möglichen Berge (2d also strich hoch,strich runter, strich grade) mit dieser Breite rekursiv berechnet werden (bergerweitern) und anschließend ausgegeben.
die Fehlermeldung lautet:
Exception in Thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at berge.BergErhoehen(berge.java:35)
at berge.Bergerweitern(berge.java:16)
at berge.Bergerweitern(berge.java:26)
at berge.main(berge.java:55)
at berge.Bergerweitern(berge.java:26)
erscheint wenn Breite größer als 1 gewählt wird (bei "2" 1 mal, bei "3" 2 mal...)
Es liegt nicht an der for schleife (oder nicht nur ...)!
Ich würde mich sehr über eure Hilfe freuen
Ich habe den Fehler beheben können. Vielen Dank an dieser Stelle für die schnelle Hilfe.
Hi,
irgendwie funktioniert mein Code nicht richtig - ich könnte also ein wenig Hilfe gebrauchen
Geplant ist, dass eine Breite eingelesen wird (main), und alle möglichen Berge (2d also strich hoch,strich runter, strich grade) mit dieser Breite rekursiv berechnet werden (bergerweitern) und anschließend ausgegeben.
die Fehlermeldung lautet:
Exception in Thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at berge.BergErhoehen(berge.java:35)
at berge.Bergerweitern(berge.java:16)
at berge.Bergerweitern(berge.java:26)
at berge.main(berge.java:55)
at berge.Bergerweitern(berge.java:26)
erscheint wenn Breite größer als 1 gewählt wird (bei "2" 1 mal, bei "3" 2 mal...)
Es liegt nicht an der for schleife (oder nicht nur ...)!
Code:
import AlgoTools.IO;
public class berge{
public static void Bergerweitern(int n, int Breite,
int[] Berghoehe) {
if (n < Breite) {
if (Berghoehe[n] > 0) {
int[] Berghoehe2 = new int[Breite];
for (int i=0; i<n; i++) {
Berghoehe2[i] = Berghoehe[i];
}
int[] Berghoehe3 = new int[Breite];
for (int i=0; i<n; i++) {
Berghoehe3[i] = Berghoehe[i];
}
n=n+1;
Bergerweitern(n,Breite,BergErhoehen (n,Breite, Berghoehe));
Bergerweitern(n,Breite,BergGleich (n,Breite, Berghoehe2));
Bergerweitern(n,Breite,BergVerkleinern (n,Breite, Berghoehe3));
}
else {
int[] Berghoehe2 = new int[Breite];
for (int i=0; i<n; i++) {
Berghoehe2[i] = Berghoehe[i];
}
n=n+1;
Bergerweitern(n,Breite,BergErhoehen (n,Breite, Berghoehe));
Bergerweitern(n,Breite,BergGleich (n,Breite, Berghoehe2));
}
}
else {
IO.println(Berghoehe);
}
}
public static int[] BergErhoehen (int n, int Breite, int[] Berghoehe) {
Berghoehe[n] = Berghoehe[n-1]+ 1 ;
return Berghoehe;
}
public static int[] BergGleich (int n,int Breite,int[] Berghoehe2) {
Berghoehe2[n] = Berghoehe2[n-1] ;
return Berghoehe2;
}
public static int[] BergVerkleinern (int n, int Breite,int[] Berghoehe3) {
Berghoehe3[n] = Berghoehe3[n-1]- 1 ;
return Berghoehe3;
}
public static void main (String[] argv) {
int Breite;
int n;
int[] Berghoehe;
Breite = IO.readInt();
Breite = Breite+1;
Berghoehe = new int[Breite];
n = 1;
Berghoehe[0] = 0;
Bergerweitern (n, Breite, Berghoehe);
}
}
Zuletzt bearbeitet: