TicTacToe Fehler beim Compilieren

HeHa

Mitglied
Hallo,

ich bin neu hier und lerne in meinem Studium jetzt Java. Unsere Aufgabe war/ist es ein TicTacToe Spiel zu programmieren. Alles soll auf der Konsole laufen.

Beim kompilieren erscheinen Fehlermeldungen, die ich nicht zuordnen kann bzw. ich denke das es richtig ist. Ich hoffe ihr könnt mir dabei helfen.


Java:
import java.util.Scanner;

public class TicTacToe3
{
Scanner scan = new Scanner(System.in);

public static void main(String[] args)
	{
	Spieler Spieler1 = new Spieler();
	Spieler1.spielerName();
	Spieler1.spNr = 1;
	Spieler Spieler2 = new Spieler();
	Spieler2.spielerName();
	Spieler2.spNr = 2;
	
	
	Spielfeld Spielfeld1 = new Spielfeld();
	Spielfeld1.Ausgabe();
	
	int zug;
	Spieler aktSpieler = new Spieler();
	for(zug = 1; zug < 10; zug++)
		{
		switch(zug %2)
			{
			case 1:
			aktSpieler = Spieler1;
			break;
			case 0:
			aktSpieler = Spieler2;
			break;
			default:
			}
		}
	}
}

class Spieler
{
public String name;
public int spNr;
public void spielerName()
	{
	Scanner scan = new Scanner(System.in);
	System.out.println("Bitte Spielernamen eingeben");
	name = scan.next();
	}
	
	//public koordinatenEingeben()
	{
	System.out.println(name + " bitte geben Sie Ihre Koordinate ein.");
	}

}

class Spielfeld
{
public int Tabelle[][] = new int[3][3];

public void Ausgabe()
	{
	for(int[] Zeile:Tabelle)
		{
		for(int feld:Zeile)
			{
			if(feld == 0)
					{
					System.out.print("|_|");
					}
				else if(feld == 1)
					{
					System.out.print("|X|");
					}
				else if(feld == 2)
					{
					System.out.print("|O|");
					}
			}
				System.out.println();
		}
	}
}

class Zug
{
	int xZeile = 0;
	int ySpalte = 0;

	System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");

	Scanner scan = new Scanner(System.in);
	xZeile = scan.next();
	ySpalte = scan.next();


	int Koordinate = Spielfeld1.Tabelle[xZeile][ySpalte];

	boolean wiederholung = false;

	do
	{
		if !(xZeile > 2 || ySpalte > 2)
			{
			switch(Koordinate)
				{
				case 0:
				Spielfeld1.Tabelle[xZeile][ySpalte] = aktSpieler.spNr;
				break;
				case 1:
				System.out.println("Feld ist belegt");
				wiederholung = true;
				break;
				case 2:
				System.out.println("Feld ist belegt");
				wiederholung = true;
				break;
				default:
				}
			}
			else
			{
			System.out.println("Es sind nur Werte zwischen 0 und 2 zulaessig);
			wiederholung = true;
			}
	} while(wiederholung);

}

Dabei erscheinen diese Fehlermeldungen:

TicTacToe3.java:89: <identifier> expected
System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");
^
TicTacToe3.java:89: illegal start of type
System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");
^
TicTacToe3.java:89: ')' expected
System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");
^
TicTacToe3.java:89: ';' expected
System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");
^
TicTacToe3.java:89: illegal start of type
System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");
^
TicTacToe3.java:89: ';' expected
System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");
^
TicTacToe3.java:92: <identifier> expected
xZeile = scan.next();
^
TicTacToe3.java:93: <identifier> expected
ySpalte = scan.next();
^
TicTacToe3.java:100: illegal start of type
do
^
TicTacToe3.java:100: ';' expected
do
^
TicTacToe3.java:102: illegal start of type
if !(xZeile > 2 || ySpalte > 2)
^
TicTacToe3.java:102: <identifier> expected
if !(xZeile > 2 || ySpalte > 2)
^
TicTacToe3.java:102: <identifier> expected
if !(xZeile > 2 || ySpalte > 2)
^
TicTacToe3.java:102: ';' expected
if !(xZeile > 2 || ySpalte > 2)
^
TicTacToe3.java:102: illegal start of type
if !(xZeile > 2 || ySpalte > 2)
^
TicTacToe3.java:102: ';' expected
if !(xZeile > 2 || ySpalte > 2)
^
TicTacToe3.java:120: illegal start of type
else
^
TicTacToe3.java:120: ';' expected
else
^
TicTacToe3.java:122: <identifier> expected
System.out.println("Es sind nur Werte zwischen 0 und 2 zulaessig);
^
TicTacToe3.java:122: unclosed string literal
System.out.println("Es sind nur Werte zwischen 0 und 2 zulaessig);
^
TicTacToe3.java:122: ')' expected
System.out.println("Es sind nur Werte zwischen 0 und 2 zulaessig);
^
TicTacToe3.java:123: ';' expected
wiederholung = true;
^
TicTacToe3.java:123: illegal start of type
wiederholung = true;
^
TicTacToe3.java:123: <identifier> expected
wiederholung = true;
^
TicTacToe3.java:123: ';' expected
wiederholung = true;
^
TicTacToe3.java:125: class, interface, or enum expected
} while(wiederholung);
^
TicTacToe3.java:127: class, interface, or enum expected
}
^

Ich danke Euch schon einmal im Vorraus.
 
ein Programm fängt mit 2 Zeilen an:

class Name {
}

danach kommt vielleicht eine dritte und vierte Zeile, eine Methodendeklaration,
danach Schritt für Schritt weiter bis ein Fehler auftritt,

erst 500 Zeilen Code zu schreiben und sich dann über 300 Fehler zu wundern, das bringt doch nix,
sicher kann manchmal eine kleine Änderung wie eine fehlende Schleife viele Fehler verursachen, aber dann weiß man wenigstens oft wo man zuletzt dran war, kann das rückgängig machen usw.

-----

(mindestens ein) Problem hier: in Zug steht normaler Code direkt in der Klasse, das geht nicht, Code darf nur in Methoden oder Konstruktoren stehen
 
Danke für den Tipp mit der Methode. Das hat schon viele Fehler beseitigt.
Jetzt habe ich eine Methode herum erstellt. Doch verlangt sie jetzt das ich die Variablen übergeben muss. Wie mache ich das richtig?

Momentan ist es ja falsch, da es nicht funktioniert.

Java:
class Zug
{
	int xZeile = 0;
	int ySpalte = 0;
	
	public void koordinatenEingeben(String aktSpieler.name)
	
	{
		System.out.println("Spieler " + aktSpieler.name + "Geben Sie Ihre Koordinaten ein. ");

		Scanner scan = new Scanner(System.in);
		xZeile = scan.nextInt();
		ySpalte = scan.nextInt();


		int Koordinate = Spielfeld1.Tabelle[xZeile][ySpalte];

		boolean wiederholung = false;
 
oje,

public void koordinatenEingeben(String aktSpieler.name)
->
public void koordinatenEingeben(Spieler aktSpieler)
oder auch
public void koordinatenEingeben(String nameDesSpielers)


wenn du aber so völlig beliebige Texte ohne Java-Regeln zusammenwirfst werde ich kaum jede einzelne Stelle korrigieren,
eine Frage an mich hast du noch frei, überlege dir aber gut ob du das für völligen Grundlagenkram verwenden willst,
naja, vielleicht antworten danach dann andere 😉
 
jeder fängt mal klein an und aus diesem Grund stelle ich nun mal die Fragen. Ich möchte es ja lernen. Wenn du meine Frage zu blöd findest, brauchst du mir ja nicht antworten. (Hoffe aber das du das nicht machst.)

Jede Stelle sollst du auch nicht korrigieren. Nur wenn ich nicht weiter komme. Wie meinst du das ob ich noch Frei habe und was meinst du damit ob ich das für völligen Grundlagenkram verwenden möchte? Willst du sagen, dass es den Aufwand nicht lohnt für so ein kleines Programm? Mein Prof will es aber so...
Ich hatte es schon einmal geschrieben. Aber dann so, dass ich es allein hinbekommen habe. Mein Prof will aber das wir die ganzen Klassen und Methoden verwenden.
 
> Wie meinst du [..] Willst du sagen [..]
an erster Stelle meine und will ich immer, dass das nicht zerdiskutiert wird, also ignoriere diese Abschnitte einfach und weitermachen
 
Jetzt hat alles erstmal geklappt. Muss jetzt weiter überlegen wie ich es mache. Also danke ich, dass ihr meine komischen oder dumme Fragen beantwortet habt. In einem halben Jahr fasse ich mir dann bestimmt auch an den Kopf.

Wenn ich noch Probleme habe, melde ich mich. Das Thema ist jetzt erledigt.
 

Zurück
Oben