Compiler-Fehler Komische Ausgabe meines Programms

LordScrat

Mitglied
Hallo erstmal ich bin noch nicht so lange am Coden und auch nicht sonderlich gut in Java (Programmieren generell: Anfänger Niveau würde ich sagen) und als mir langweilig war hab ich mir gedacht einen Tic Tac Toe Code zu schreiben. Es funktionieren so ziemlich alle Fälle die ich versucht habe, außer eben einer (der ist auch unten angeführt). Ich weiß wirklich nicht weshalb das ist, ich bin die (ich weiß unnötig lange) if-Bedingung schon doppelt und dreifach durchgegangen aber bin nicht auf den Wurm gekommen :/ Ich hoffe ihr könnt mir helfen und möglicherweise könnte mir auch jemand eine elegantere Lösung zur checkWin() Methode zu sagen, statt der vielen, überlangen ifs. Ach ja, die Zahlen bei den Gewinner ausgaben (z.B.: Der Gewinner ist Spieler x4) habe ich reingetan um auf das Problem zu kommen, also bitte ignorieren :) Vielen Dank schonmal im Vorraus für jede Antwort und seit bitte nicht zu Grob zu mir ich bin erst Anfänger >.<

Java:
/**
 * Simulation des Spieles Tic Tac Toe
 * Datum der letzten Bearbeitung: 1.03.2015
 * Author: ******
 */


import java.util.Scanner;
public class TicTacToe {

	public static void main(String[] args) {
		
		char[][] arr=new char[3][3];		//Spielfeld
		int[] pos=new int[2];				//1...Zeile, 2...Spalte
		int countTurn=1;				//Zug counter
		boolean game=true;				//Bedingung damit die Schleife rennt
		
		fillArrFirstTime(arr);			//Füllt das Array zum ersten Mal mit "-"
		
		while(game==true){				
			printField(arr);					//Gibt das Array aus
			pos=inputPos(pos, arr);					//In dieser Methode gibt der Spieler ein wo er sein Zeichen Setzen will
			arr=fillPosInArr(pos, arr, countTurn);		//In dieser Methode wird das Zeichen tatsächlich ins Spielfeld eingefügt
			if(countTurn>=5){						//Es ist erst möglich ab dem 5. Zug zu gewinnen. Dieses if ist nicht notwendig und dient eher zur Orientierung
				game=checkWin(arr, countTurn);		//In dieser Methode wird überprüft ob der Spieler der dran ist 3 in einer Zeile, und damit gewonnen hat
			}
			countTurn++;						
		}
			
	}
	public static char[][] fillArrFirstTime(char[][] arr){
		for(int i=0; i<arr.length; i++){			
			for(int j=0; j<arr[i].length; j++){
				arr[i][j]='-';					//Füllen der Stelle x, y (in dem Fall i, j) mit "-". Dies wird nur am Anfang des Programms gemacht
			}
		}
		return arr;
	}
	public static void printField(char[][] arr){
		int count=1;					//Hilfe zur Gestaltung der Ausgabe
		System.out.println("  1 2 3");
		for(char[] i: arr){			//foreach-Schleifen zur Ausgabe von Arrays
			System.out.printf("%d ", count);
			count++;
			for(char j: i){
				System.out.printf("%s ", j);
			}
			System.out.println();
		}
	}
	public static int[] inputPos(int[] pos, char[][] arr){
		Scanner s=new Scanner(System.in);
		
		System.out.println("Geben Sie Ihre gewählte Zeile ein! ");
		pos[0]=s.nextInt()-1;				//-1 wegen der Index Abfrage bei Arrays
		
		System.out.println("Geben Sie Ihre gewählte Spalte ein! ");
		pos[1]=s.nextInt()-1;				//-1 wegen der Index Abfrage bei Arrays
		
		if(pos[0]>2||pos[1]>2||pos[0]<0||pos[1]<0||arr[pos[0]][pos[1]]=='x'||arr[pos[0]][pos[1]]=='o'){		//Überprüfen ob der eingegebene Wert zu groß/klein oder die Position schon beschrieben ist
			System.out.println("Falsche Eingabe");
			inputPos(pos, arr);					//Rekursion zur Neueingabe
		}
		return pos;
	}
	public static char[][] fillPosInArr(int[] pos, char[][] arr, int count){
		arr[pos[0]][pos[1]]=count%2==0?'o':'x';		//Bedingunsoperator zur Überprüfung welcher Spieler dran ist
		return arr;
	}
	public static boolean checkWin(char[][] arr, int count){
		if(count==9){				//Man kann nicht mehr als 9 Züge spielen
			printField(arr);
			System.out.println("Unentschieden");
			return false;
		}else{
			if((arr[0][0]==arr[0][1]&&arr[0][0]==arr[0][2])||(arr[1][0]==arr[1][1]&&arr[1][0]==arr[1][2])||(arr[2][0]==arr[2][1]&&arr[2][0]==arr[2][2])){	//Überprüfen aller Zeilen auf Gleichheit
				if(count%2==0){
					printField(arr);
					System.out.println("Der Gewinner ist Spieler o1");
				}else{
					printField(arr);
					System.out.println("Der Gewinner ist Spieler x2");				
				}
				return false;
			}else if((arr[0][0]==arr[1][0]&&arr[0][0]==arr[2][0])||(arr[0][1]==arr[1][1]&&arr[0][1]==arr[2][1])||(arr[0][2]==arr[1][2]&&arr[0][2]==arr[2][2])){		//Überprüfen aller Spalten auf Gleichheit
				if(count%2==0){
					printField(arr);
					System.out.println("Der Gewinner ist Spieler o3");
				}else{
					printField(arr);
					System.out.println("Der Gewinner ist Spieler x4");		
				}
				return false;
			}else if((arr[0][0]==arr[1][1]&&arr[0][0]==arr[2][2])||(arr[0][2]==arr[1][1]&&arr[0][2]==arr[2][0])){		//Überprüfen aller Diagonalen auf Gleichheit
				if(count%2==0){
					printField(arr);
					System.out.println("Der Gewinner ist Spieler o5");
				}else{
					printField(arr);
					System.out.println("Der Gewinner ist Spieler x6");				
				}
				return false;
			}else{
				return true;
			}
		}
	}
}

Ausgabe:
  1 2 3
1 - - - 
2 - - - 
3 - - - 
Geben Sie Ihre gewählte Zeile ein! 
1
Geben Sie Ihre gewählte Spalte ein! 
1
  1 2 3
1 x - - 
2 - - - 
3 - - - 
Geben Sie Ihre gewählte Zeile ein! 
2
Geben Sie Ihre gewählte Spalte ein! 
1
  1 2 3
1 x - - 
2 o - - 
3 - - - 
Geben Sie Ihre gewählte Zeile ein! 
1
Geben Sie Ihre gewählte Spalte ein! 
2
  1 2 3
1 x x - 
2 o - - 
3 - - - 
Geben Sie Ihre gewählte Zeile ein! 
2
Geben Sie Ihre gewählte Spalte ein! 
2
  1 2 3
1 x x - 
2 o o - 
3 - - - 
Geben Sie Ihre gewählte Zeile ein! 
3
Geben Sie Ihre gewählte Spalte ein! 
1
  1 2 3
1 x x - 
2 o o - 
3 x - - 
Der Gewinner ist Spieler x4
 

franky27

Bekanntes Mitglied
Nimms mir nicht übel, aber das ist mir zu kompliziert gemacht um das durchzugehen.
Aber wenn jemand anders das machen will würde es sicherlich helfen wenn du
erwähnen würdest was das Problem ist.
 

Ocean15

Aktives Mitglied
Dein Problem ist die checkWin Methode. Du prüfst ob die reihen zeigen und diagonalen gleich sind. Sind sie bei dir auch , den laut der Methode ist auch "- - -" eine Gleichheit und somit ein Gewinn.

Es tritt aber erst ab Runde 5 auf, da du oben ne Sperre eingebaut hast, bei der der Gewinn erst ab Runde 5 geprüft wird.

LG
Ocean15
 

LordScrat

Mitglied
Du hast schon recht, ich hab mich etwas schlecht ausgedrückt. Ich dachte die Aussage: "Es funktionieren so ziemlich alle Fälle die ich versucht habe, außer eben einer (der ist auch unten angeführt)" genüge, da ich davon ausging man sehe sich den Code bis ganz unten an. Naja egal trotzdem danke für deine Antwort hab die Lösung schon :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Erste Schritte Console - Sehr komische Ausgabe! Java Basics - Anfänger-Themen 3
T JDom komische Ausgabe Java Basics - Anfänger-Themen 4
G komische Ausgabe mit @.@. Java Basics - Anfänger-Themen 4
B Komische Array Ausgabe Java Basics - Anfänger-Themen 6
J ObjectOutputStream writeChars, komische Zeichen nur in 1. Zeile Java Basics - Anfänger-Themen 2
R Komische Zeichen in Java Java Basics - Anfänger-Themen 5
B komische NoSuchElementException Java Basics - Anfänger-Themen 18
D Methoden ArrayList Rückgabe bringt komische Werte Java Basics - Anfänger-Themen 12
S Komische ANT Warnungen Java Basics - Anfänger-Themen 4
B Komische Strings Java Basics - Anfänger-Themen 2
B komische NullPointerException Java Basics - Anfänger-Themen 5
E komische endlosschleife Java Basics - Anfänger-Themen 6
M txt-Datei schreiben: Es erscheinen komische Kästchen Java Basics - Anfänger-Themen 4
R BufferedWriter macht komische Zeichen Java Basics - Anfänger-Themen 3
S Komische Feldermeldung bei Forschleife Java Basics - Anfänger-Themen 3
X Wie kann das den sein? Komische Variablenbelegung! Java Basics - Anfänger-Themen 5
C ok... der spuckt irgendwie nur komische zeichen aus.... Java Basics - Anfänger-Themen 2
G ArrayList mit ArrayList als Inhalt - komische Sortierung? Java Basics - Anfänger-Themen 12
G CSV Datei einlesen & komische Zeichen Java Basics - Anfänger-Themen 5
G komische sache Java Basics - Anfänger-Themen 4
C Komische Zeichen beim Lesen aus einer .reg-Datei Java Basics - Anfänger-Themen 2
M Komische Syntax bei Double-Buffering-Beispiel Java Basics - Anfänger-Themen 2
B komische NumberFormatException beim DezimalToBinär-Rechner Java Basics - Anfänger-Themen 4
E Komische Syntax Java Basics - Anfänger-Themen 3
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
M Ausgabe beim Overloading Java Basics - Anfänger-Themen 3
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
B Binärzahlen auflisten, falsche Ausgabe? Java Basics - Anfänger-Themen 1
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
B Deadlock verstehen der Ausgabe! Java Basics - Anfänger-Themen 12
Lion.King Ausgabe mit Eigenschaften Java Basics - Anfänger-Themen 4
D Java Pattern mit X Ausgabe Stern Java Basics - Anfänger-Themen 4
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
Xaver code Tastatur ausgabe Java Basics - Anfänger-Themen 4
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
K Leerzeile in Konsolen-Ausgabe Java Basics - Anfänger-Themen 4
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
Q return Ausgabe Java Basics - Anfänger-Themen 4
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
S Ausgabe des Variablenwerts Java Basics - Anfänger-Themen 10
I Ausgabe nicht nur senkrecht sondern auch waagerecht. Java Basics - Anfänger-Themen 2
paulen1 Methoden Unerwünschte Ausgabe bei System.out.print in For-Schleife Java Basics - Anfänger-Themen 8
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
danieldemetry Java - Graph Komponenten - Ausgabe Java Basics - Anfänger-Themen 0
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
D BigDecimal Ausgabe sehr lang. Java Basics - Anfänger-Themen 2
J String Ausgabe Java Basics - Anfänger-Themen 2
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
KogoroMori21 Array-Ausgabe Java Basics - Anfänger-Themen 6
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
E Ausgabe überschreiben Java Basics - Anfänger-Themen 15
D Ausgabe von Array Java Basics - Anfänger-Themen 2
U Ausgabe Java Basics - Anfänger-Themen 4
J Buchstabenhäufigkeit mit Array und Ausgabe des häufigsten Buchstaben Java Basics - Anfänger-Themen 25
V Multiplikationstafel - Ausgabe Java Basics - Anfänger-Themen 4
L Warum ist die Ausgabe anders als das was im Bezeichner steht? Java Basics - Anfänger-Themen 4
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
H Falsche Ausgabe Java Basics - Anfänger-Themen 2
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
D Warum erfolgt folgende Ausgabe und warum? Java Basics - Anfänger-Themen 4
C Ausgabe in der Konsole Java Basics - Anfänger-Themen 11
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
Y Methode + Parameters + Ein und Ausgabe Java Basics - Anfänger-Themen 1
K Methodenaufruf /-ausgabe Java Basics - Anfänger-Themen 5
A Wiederholte Ausgabe vermeiden Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
T Ausgabe einer for Schleife Java Basics - Anfänger-Themen 2
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Unterklassen (Klasse für Ausgabe) Java Basics - Anfänger-Themen 4
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
J Methode zur Ausgabe eines Dreiecks aus Sternen schreiben? Java Basics - Anfänger-Themen 2
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
K Rechtsbündige Ausgabe von Zahlen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben