Hi,
Ich habe hier ein kleines Programm programmiert, was ein sogenanntes "Magisches Quadrat" ausgibt.
Komischerweise bekomme ich jedes Mal, wenn ich es mit einer geraden Zahl (2, 4, 6, 8...) ausprobiere die Fehlermeldung:
Hier der Code:
Jemand eine Ahnung woran das liegt?
Thx.
Ich habe hier ein kleines Programm programmiert, was ein sogenanntes "Magisches Quadrat" ausgibt.
Komischerweise bekomme ich jedes Mal, wenn ich es mit einer geraden Zahl (2, 4, 6, 8...) ausprobiere die Fehlermeldung:
Exception in thread "main" java.lang.StackOverflowError
Hier der Code:
Code:
class MagischesQuadrat {
int[][] feld;
int i;
int x, y;
int size = 0;
MagischesQuadrat(int n) {
size = n;
feld = new int[n][n];
i = 1;
x = n/2;
y = n/2+1;
feld[x][y] = i;
for (i = 2; i<=n*n; i++) {
if (x-1<0)
x = n-1;
else x = x - 1;
if (y + 1 > n-1)
y = 0;
else y = y + 1;
setzen(x,y,n);
}
}
void setzen(int x, int y, int n) {
if (feld[x][y] == 0) {
feld[x][y] = i;
} else {
if (x + 1 > n-1)
x = 0;
else x = x + 1;
if (y + 1 > n-1)
y = 0;
else y = y + 1;
setzen(x,y,n);
}
}
public void print() {
for (x = 0; x < size; x++) {
System.out.println("");
for (y = 0; y < size; y++)
System.out.print(feld[x][y] + " | ");
}
}
public static void main(String[] args) {
MagischesQuadrat mq = new MagischesQuadrat(4);
mq.print();
}
}
Jemand eine Ahnung woran das liegt?
Thx.