hey - ich habe folgenden Quelltext gefunden (Quelle
rojekte.gymnasium-odenthal.de)
und wollte dieses Programm interessehalbe einmal ausführen lassen.
Nun habe ich ja keine main methode die ich aber zum ausführen benötige
kann mir jemand dabei helfen, diese in den gegeben code einzufüge?
kommt die main methode überhaupt in die gleiche javadatei oder muss ich eine testdatei.java anlegen?
vielen dank schon mal fürs lesen..
und wollte dieses Programm interessehalbe einmal ausführen lassen.
Nun habe ich ja keine main methode die ich aber zum ausführen benötige
kann mir jemand dabei helfen, diese in den gegeben code einzufüge?
kommt die main methode überhaupt in die gleiche javadatei oder muss ich eine testdatei.java anlegen?
vielen dank schon mal fürs lesen..
Java:
public class MagicSquare {
// Anfang Attribute
private int[][] square;
private int n;
// Ende Attribute
/**
* Konstruktor für ein magisches Quadrat der Groesse n
* @param n Groesse des magischen Quadrats
*/
public MagicSquare(int n) {
this.n = n;
square = new int[n][n];
createMagicSquare(1);
}
/**
* Gibt das Quadrat auf der Console aus.
*/
public void print() {
for (int y = 0; y < n; y++) {
for (int x = 0; x < n; x++) {
System.out.print(""+square[x][y]+"\t");
}
System.out.println("");
}
System.out.println("--------------");
}
/**
* Prueft, ob das Quadrat magisch gefuellt ist.
* @return true falls das Quadrat magisch gefuellt ist, andernfalls false
*/
public boolean isMagicSquare() {
int x,y;
int sollwert, summe;
boolean result= true;
sollwert= (n * (n*n+1)) / 2; // Summe, die jede Zeile erhalten muss
for (x= 0; x < n; x++){
// Spalten testen
summe= 0;
for (y= 0; y < n; y++) summe= summe + square[x][y];
result= result && (summe == sollwert);
}
for (y= 0; y < n; y++){
// Zeilen testen
summe= 0;
for (x= 0; x < n; x++) summe= summe + square[x][y];
result= result && (summe == sollwert);
}
summe= 0;
// Abwärts-Diagonale testen
for (x= 0; x < n; x++) summe= summe + square[x][x];
result= result && (summe == sollwert);
summe= 0;
// Aufwärts-Diagonale testen
for (x= 0; x < n; x++) summe= summe + square[x][n-x-1];
result= result && (summe == sollwert);
return result;
}
/**
* Fuellt das Quadrat magisch
* @param digit gibt an, welche Zahl gerade eingetragen wird.
*/
public void createMagicSquare(int digit) {
int x,y;
if ((digit > n*n) && isMagicSquare())
print();
else {
for (x = 0; x < n; x++) {
for (y = 0; y < n; y++) {
if (square[x][y] == 0) {
square[x][y] = digit;
createMagicSquare(digit + 1);
square[x][y] = 0;
}
}
}
}
}
}