Hallo Leute,
Ich bin noch ein ziemlicher Anfänger und entschuldige mich jetzt schonmal für dumme fragen etc., ich hab auch echt viele Threads dazu gelesen aber nie hab ich genau das gefunden was ich brauche, nun sitze ich hier schon einige Stunden an einer Aufgabe in der ich zunächst eine Methode schreiben sollte die ein Feld mit Größe und Breite N erzeugt und dann meine Initialen mit + in das Feld schreibt, die Teilaufgabe ist soweit kein Problem aber jetzt soll ich in der nächsten Aufgabe eine Methode (wirklich nur eine) erstellt werden die das Game of Life auf das vorher erzeugte Feld anwendet. (Lebende Zellen enthalten '+', Tote enthalten enthalten '-' und leere Zellen enthalten 'Leerzeichen')
Ich hab das problem das ich wenn es darum geht die lebenden Nachbarn zu ermitteln immer wieder ein
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -2 out of bounds for length 12
at x.gameOfLife(x.java:58)
at x.main(x.java:11)"
erhalte.
Ich weiß auch woran es liegt, nämlich weil beim abfragen der Nachbarn teilweise auf einen Index zugegriffen wird der außerhalb des Feldes liegt.
Vielleicht kann mir ja einer von euch weiterhelfen und mir sagen was ich falsch gemacht habe.
Schonmal vielen Dank im Vorraus für mögliche Antworten!!
Folgend mein bisheriger Quellcode:
Ich bin noch ein ziemlicher Anfänger und entschuldige mich jetzt schonmal für dumme fragen etc., ich hab auch echt viele Threads dazu gelesen aber nie hab ich genau das gefunden was ich brauche, nun sitze ich hier schon einige Stunden an einer Aufgabe in der ich zunächst eine Methode schreiben sollte die ein Feld mit Größe und Breite N erzeugt und dann meine Initialen mit + in das Feld schreibt, die Teilaufgabe ist soweit kein Problem aber jetzt soll ich in der nächsten Aufgabe eine Methode (wirklich nur eine) erstellt werden die das Game of Life auf das vorher erzeugte Feld anwendet. (Lebende Zellen enthalten '+', Tote enthalten enthalten '-' und leere Zellen enthalten 'Leerzeichen')
Ich hab das problem das ich wenn es darum geht die lebenden Nachbarn zu ermitteln immer wieder ein
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -2 out of bounds for length 12
at x.gameOfLife(x.java:58)
at x.main(x.java:11)"
erhalte.
Ich weiß auch woran es liegt, nämlich weil beim abfragen der Nachbarn teilweise auf einen Index zugegriffen wird der außerhalb des Feldes liegt.
Vielleicht kann mir ja einer von euch weiterhelfen und mir sagen was ich falsch gemacht habe.
Schonmal vielen Dank im Vorraus für mögliche Antworten!!
Folgend mein bisheriger Quellcode:
Java:
public class Aufgabe {
public static void main(String[] args) {
int n = 12
;
ausgabe(erstelleFeld(n));
ausgabe2(gameOfLife(erstelleFeld(n),12));
}
public static char[][] erstelleFeld(int n){
char [][] erg = new char [n][n];
for(int i = 0; i<erg.length; i++) {
for(int j = 0; j<erg[i].length; j++) {
if (j==1 && i>= n/4 && i<=n/4*3+1 || i==n/4*3+1 && j>= 2 & j<=(n/3)) // Buchstabe L
erg[i][j] = '+';
else if (i==n/4 & j>= n/2 & j<=n || i==n/2 & j>= n/2 & j<=n || i==n/4*3+1 & j>= n/2 & j<=n-1 || i>=n/4 & i<=n/2 & j==n/2 || i>=n/2 & i<=n/4*3 & j==n-1 ) //Buchstabe S
erg[i][j] = '+';
else erg[i][j] = ' ';
}
}
return erg;
}
public static void ausgabe(char[][] erg) {
for (int i = 0; i<erg.length; i++) {
for (int j = 0; j<erg[i].length; j++)
System.out.print(erg[i][j]+" ");
System.out.println();
}
}
public static char [][]gameOfLife(char[][] erg, int t){
char[][] zukunft = new char[erg.length][erg.length];
for (int i = 0; i < erg.length - 1; i++) {
for (int j= 0; j < erg.length - 1; j++) {
int lebendigeNachbarn=0;
for(int k= -1;k<=1;k++) {
for(int l= -1;l<=1;l++) {
if (erg[k-1][l-1] == '+')
lebendigeNachbarn++;
else if (erg[k-1][l] == '+')
lebendigeNachbarn++;
else if (erg[k-1][l+1] == '+')
lebendigeNachbarn++;
else if (erg[k][l-1] == '+')
lebendigeNachbarn++;
else if (erg[k][l+1] == '+')
lebendigeNachbarn++;
else if (erg[k+1][l-1] == '+')
lebendigeNachbarn++;
else if (erg[k+1][l] == '+')
lebendigeNachbarn++;
else if (erg[k+1][l+1] == '+')
lebendigeNachbarn++;}
if((erg[i][j]=='+')&&(lebendigeNachbarn<2))
zukunft[i][j]='-';
else if ((erg[i][j]=='-')&&(lebendigeNachbarn==3))
zukunft[i][j]='+';
else if ((erg[i][j]=='+')&&(lebendigeNachbarn==3||lebendigeNachbarn==2))
zukunft[i][j]='+';
else if ((erg[i][j]=='+')&&(lebendigeNachbarn>3))
zukunft[i][j]='-';
else zukunft[i][j]=erg[i][j];
}}
} return zukunft; }
public static void ausgabe2(char[][] zukunft) {
for (int i = 0; i<zukunft.length; i++) {
for (int j = 0; j<zukunft[i].length; j++)
{if (zukunft[i][j] == '-')
System.out.print("- ");
else System.out.print("+ ");}
System.out.println();
}
}}
Zuletzt bearbeitet von einem Moderator: