main Methode?

dubidu

Mitglied
hey - ich habe folgenden Quelltext gefunden (Quelle:projekte.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..

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;
}
}
}
}
}
}
 

eRaaaa

Top Contributor
Du kannst sie auch in die selbe Datei schreiben wenn du willst :)
Java:
	public static void main(String[] args) {
		new MagicSquare(3); //oder eben ein x-beliebiges andere "n" :)
	}
 

XHelp

Top Contributor
Du kannst die main-Methode auch in eine andere Klasse packen, aber einfachheitshalber würde ich die hier einfügen. In der main musst du nur eine Instanz von MagicSquare erstellen, dazu musst du dem Konstruktor einen int-parameter übergeben. Dannach kannst du auf der Instanz die
Code:
.print()
Methode aufrufen um ein Ergebnis zu sehen.
 

dubidu

Mitglied
super danke erst mal

ich hab da mal was ausprobiert - wollte n als variabel gestalten und hab das einfach mal hinten an den quelltext angehängt, aber das kann doch nicht richtig sein...???:L

wär echt super wenn ihr euch das noch mal anschauen könntet:

Java:
...
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
        
System.out.println("Bitte gib eine Zahl n ein:");
int n = sc.nextInt();

MagicSquare mag = new MagicSquare(); 
System.out.print(mag.print());

}
 

XHelp

Top Contributor
Naja, das
Code:
n
solltest du auch dem Konstruktor übergeben. Außerdem ist
Code:
print
eine void-Methode. D.h. du brauchst kein Sysout drumherum.
 

dubidu

Mitglied
Java:
...
import java.util.Scanner;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
        
System.out.println("Bitte gib eine Zahl n ein:");
int n = sc.nextInt();
 
MagicSquare mag = new MagicSquare(n); 
mag.print();
 
}

???:L

sorry, aber ich mach das noch nicht so lang mit dem programmieren...
 

nrg

Top Contributor
ja aber ausprobieren kannst es doch trotzdem :). bei fehlermeldung einfach dazuposten. ansonsten thema als erledigt markieren. das kann man auch, wenn man nicht lange programmiert ;)
 

XHelp

Top Contributor
Falls du import wirklich an dieser Stelle hast, dann ist es da falsch. Das kommt nacht ganz oben, außerhalb der Klasse.
Sollte es dennoch nicht gehen, dann wäre es hilfreich, wenn du die Fehlermeldung zeigen würdest
 

dubidu

Mitglied
okay:
mein compiler erzählt mir folgendes - aber keine ahnung was das heißen soll...


MagicSquare.java:83: class, interface, or enum expected
import java.util.Scanner;
^
MagicSquare.java:84: class, interface, or enum expected
public static void main(String[] args) {
^
MagicSquare.java:87: class, interface, or enum expected
System.out.println("Bitte gib eine Zahl n ein:");
^
MagicSquare.java:88: class, interface, or enum expected
int n = sc.nextInt();
^
MagicSquare.java:90: class, interface, or enum expected
MagicSquare mag = new MagicSquare(n);
^
MagicSquare.java:91: class, interface, or enum expected
mag.print();
^
MagicSquare.java:93: class, interface, or enum expected
}
 

XHelp

Top Contributor
Zeig mal die komplette Datei. Der Aufbau sollte aber so aussehen:
Java:
import ... //das steht ganz oben
....
public class MagicSquare {
  //die ganzen vorgegebenen Methoden
  ....
  //und die main kommt IN die Klasse
  public static void main(String[] args) {
  }
}
//hier steht nichts mehr
 

dubidu

Mitglied
den scanner hab ich jetzt ganz oben- und schon mal eine fehlermeldung weniger..

MagicSquare.java:2: class, interface, or enum expected
Scanner sc = new Scanner(System.in);
^
MagicSquare.java:84: class, interface, or enum expected
public static void main(String[] args) {
^
MagicSquare.java:88: class, interface, or enum expected
int n = sc.nextInt();
^
MagicSquare.java:90: class, interface, or enum expected
MagicSquare mag = new MagicSquare(n);
^
MagicSquare.java:91: class, interface, or enum expected
mag.print();
^
MagicSquare.java:93: class, interface, or enum expected
}
^
6 errors
 

dubidu

Mitglied
also wenn ich dieses in einer extra datei speicher und ausführe dann funktioniert es:
Java:
import java.util.Scanner;
public class QuadratTest { 
  public static void main (String[] args) {
  Scanner sc = new Scanner(System.in);
 
        
System.out.println("Bitte gib eine Zahl n ein:");
int n = sc.nextInt();
 
MagicSquare mag = new MagicSquare(n); 
mag.print();

}
}

aber es interessiert mich echt wie das in einer datei aussehen würde
 

nrg

Top Contributor
und ist äquivalent zu dem Aufbau von XHelp? Scheint mir so, als ob du überhaupt kein [c]public class....[/c] drin hast...

Post doch mal den kompetten code :)
 

dubidu

Mitglied
juhu es funktioniert...

falls noch jemanden die lösung interessiert...
Java:
import java.util.Scanner;

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;
}
}
}
}
}



  public static void main (String[] args) {
  Scanner sc = new Scanner(System.in);
 
        
System.out.println("Bitte gib eine Zahl n ein:");
int n = sc.nextInt();
 
MagicSquare mag = new MagicSquare(n); 
mag.print();
 
}
}
 

dubidu

Mitglied
Eine Frage hätte ich dann doch noch...

Wenn ich das Programm ausführe werden ja mehrere quadrate ausgegeben, wenn ich aber nur eins haben möchte was müsste ich dann ändern bzw in welcher methode ist das geregelt?
 

dubidu

Mitglied
ne da kommt so etwas bei raus:

Bitte gib eine Zahl n ein:
3
6 7 2
1 5 9
8 3 4
--------------
8 3 4
1 5 9
6 7 2
--------------
6 1 8
7 5 3
2 9 4
--------------
8 1 6
3 5 7
4 9 2
--------------
2 9 4
7 5 3
6 1 8
--------------
4 9 2
3 5 7
8 1 6
--------------
2 7 6
9 5 1
4 3 8
--------------
4 3 8
9 5 1
2 7 6
--------------
0 0 0
0 0 0
0 0 0
--------------

und dieses letzte quadrat mit den nullen ist ja auch falsch
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
N Wozu nutzt man in der Main Methode das args Array? Java Basics - Anfänger-Themen 10
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
B Wie kann ich etwas vor der Main-Methode ausführen? Java Basics - Anfänger-Themen 21
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
G main Methode Java Basics - Anfänger-Themen 5
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
J main methode Java Basics - Anfänger-Themen 1
E Was kommt in ein Objekt und was in die Main Methode? Java Basics - Anfänger-Themen 8
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
M String außerhalb der main-Methode Java Basics - Anfänger-Themen 4
scratchy1 ArrayOutOfBoundException in main-Methode Java Basics - Anfänger-Themen 17
P Parameterübergabe, von Methode zu Methode zu main Java Basics - Anfänger-Themen 4
D Compiler-Fehler Aufrufen einer Methode von Main Java Basics - Anfänger-Themen 4
M Methode mit Array als Parameter an Main übergeben Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
G Instanzvariable in main-Methode verboten? Java Basics - Anfänger-Themen 3
M Objekt starten von der main-Methode Java Basics - Anfänger-Themen 1
A Methode aufrufen in main-Methode Java Basics - Anfänger-Themen 5
AssELAss Klassen Java Klasse in main-methode ausführen Java Basics - Anfänger-Themen 7
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
J Methode in main-Methode aufrufen Java Basics - Anfänger-Themen 5
M Klassen Main Methode in einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 13
TheMenox Methoden Auslagerung von Code aus der "main" Methode sinnvoll? Java Basics - Anfänger-Themen 70
S Methode auf Main zugreifen Java Basics - Anfänger-Themen 5
S Methoden main-Methode integrieren Java Basics - Anfänger-Themen 2
K Methoden Programm ohne Main Methode starten Java Basics - Anfänger-Themen 2
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
U Umschreiben ohne main methode ;-) Java Basics - Anfänger-Themen 8
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
F Threads Variable aus einem Thread in main Methode? Java Basics - Anfänger-Themen 9
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
V Arrays aus eigener Klasse erstellt, zuweisung aber spuckt Fehler in verbindung mit main Methode aus. Java Basics - Anfänger-Themen 3
M Exception von main Methode weiterwerfen? Java Basics - Anfänger-Themen 1
D main-Methode und Tread parallel ausführen Java Basics - Anfänger-Themen 0
A Was stimmt mit Main-Methode nicht? Java Basics - Anfänger-Themen 4
T In main-Methode Parameter übergeben Java Basics - Anfänger-Themen 3
R Methoden Main-Methode verhält sich in .jar anders als in Eclipse Java Basics - Anfänger-Themen 2
P Verständnisproblem main Methode Java Basics - Anfänger-Themen 9
O Main-Methode static modifier umgehen Java Basics - Anfänger-Themen 10
P Verwirrung mit AWT Frame und main Methode Java Basics - Anfänger-Themen 19
T Threads Neuen Thread nicht aus main-Methode starten Java Basics - Anfänger-Themen 3
iB0T Main Methode Variablen übergeben Java Basics - Anfänger-Themen 6
H Applet - main()-Methode Java Basics - Anfänger-Themen 4
S Constructor und Main Methode Java Basics - Anfänger-Themen 3
N Methoden Main Methode Java Basics - Anfänger-Themen 7
B main methode ohne public Java Basics - Anfänger-Themen 5
E Methoden Methode in main-Methode ausführen Java Basics - Anfänger-Themen 3
R Fragen über Fragen, main-Methode und Co. Java Basics - Anfänger-Themen 32
1 Werte zur main Methode übergeben Java Basics - Anfänger-Themen 5
J Main-Methode Java Basics - Anfänger-Themen 14
B Erste Schritte ergebnis der funktion in der main-methode ausgeben Java Basics - Anfänger-Themen 7
T Klasse in Main Methode Java Basics - Anfänger-Themen 3
C Main Methode überschreibt Werte Java Basics - Anfänger-Themen 3
D Von einer Methode auf eine lokale Variable in der Main zugreifen? Java Basics - Anfänger-Themen 15
M andere Main Methode Java Basics - Anfänger-Themen 5
I Nur main-Methode über Konsole aufrufbar? Java Basics - Anfänger-Themen 3
J Programm in main Methode testen Java Basics - Anfänger-Themen 29
D Jar klappt nicht trotz main Methode Java Basics - Anfänger-Themen 19
M Main methode innerhalb von Java aufrufen Java Basics - Anfänger-Themen 11
M Frage zu main Methode Java Basics - Anfänger-Themen 11
B Problem bei dem erstellen einer Main Methode Java Basics - Anfänger-Themen 4
S Main Methode String... args Java Basics - Anfänger-Themen 2
S Main-Methode aus anderer Klasse heraus starten Java Basics - Anfänger-Themen 8
X Array von Methode in Main übergeben? Java Basics - Anfänger-Themen 11
G Immer mehr Threads beim Selbstaufruf der main-Methode Java Basics - Anfänger-Themen 3
K Variable von main- Methode in Untermethode "holen" Java Basics - Anfänger-Themen 3
A main Variable in Methode ansprechen Java Basics - Anfänger-Themen 4
T Datentypen Verständnisproblem mit main Methode Java Basics - Anfänger-Themen 3
Y Ergebnis einer Berechnung an die Main Methode übergeben Java Basics - Anfänger-Themen 11
N main Methode und String Java Basics - Anfänger-Themen 11
W Parameter für die main-Methode Java Basics - Anfänger-Themen 7
C Konstanten zu einfachen Berechnungen unterhalb Main Methode Java Basics - Anfänger-Themen 19
J arraylist ausserhalb der main Methode zugänglich machen (Elemente adden und updaten) Java Basics - Anfänger-Themen 4
A Fehlende Main-Methode? Java Basics - Anfänger-Themen 12
Z Funktionsaufruf in der main-Methode Java Basics - Anfänger-Themen 12
S Problem mit main Methode Java Basics - Anfänger-Themen 2
V Wofür steht das args / arguments in Main Methode Java Basics - Anfänger-Themen 4
I Fehlendes Argument in Main-Methode abfangen Java Basics - Anfänger-Themen 15
S main-Methode gibt unerwartetes Ergebnis aus Java Basics - Anfänger-Themen 4
M Parameter an main()-Methode Java Basics - Anfänger-Themen 6
M Unterschied main-Methode und Konstruktor Java Basics - Anfänger-Themen 13
Spin class und main Methode Java Basics - Anfänger-Themen 6
J unterprogramm in main-methode einbinden Java Basics - Anfänger-Themen 9
A Klassen: Ein Testprogramm mit der main Methode schreiben? Java Basics - Anfänger-Themen 3
B Wohin mit der Main-Methode? HILFE! ("Exception in thr.) Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben