Vergleich von Chars im 2D Array

Roman90

Grünschnabel
Habe mir vorgenommen ein kleine Tic Tac Toe Spiel zu programmieren und bis jetzt lief auch alles super... Nun bin ich an dem Punkt angekommen, an dem ich nach jeder Eingabe das 2D Array, das meine Spielfläche darstellt (3x3), nach einem möglichen Gewinn prüfen lassen muss.
Habe dazu eine Prüf-Methode geschrieben, die ein true zurück geben soll, falls eine der Gewinnkombinationen richtig ist. Im Methodenrumpf sollten vorerst nur die ersten 2 Zeilen des Spielfeldes geprüft werden, doch merkwürdigerweise bekomme ich, egal welches der 9 Felder ich mit einem char besetze direkt ein true zurück... Wie kann das sein? Vergleiche ich die Chars falsch miteinander ? Bitte um Rat :)

Java:
public class Feld {
    private char field [] [] = new char [3] [3];

    public Feld(){
        
    }

    public char[][] getFeld(){
        return field;
    }

    public char getFeldSymb(int posX, int posY){
        return field[posX][posY];
    }

    public boolean pruefe(){
        if(field[0][0] == field[0][1] && field[0][1] == field[0][2] ||  //prüft 1.Zeile
           field[1][0] == field[1][1] && field[1][1] == field[1][2]){   //prüft 1.Zeile
            return true;
        }else return false;
    } 
}
 
Ich vermute es liegt daran, dass auch das vergleichen von 2 "leeren" Array-Feldern true zurückgibt:
Java:
final char[] c = new char[2];
if(c[1] == c[0]) System.out.println("true");
Auch dieser Code wird dir "true" ausgeben. Die "leeren" Felder des Char-Arrays werden automatisch initialisiert – und zwar alle mit dem selben Wert! (das macht Java so…)
 
Danke schon mal für deine Antwort. Gut, doch wie kann das vermieden werden? Ich möchte ja nur ein true zurück kriegen, wenn dort auch der selbe Char steht, nicht wenn das Feld frei ist . . . Jemand eine Idee?

EDIT: hat sich erledigt, danke :)

(vergleiche die Felder einfach mit X bzw O und nicht miteinander... Warum bin ich nicht vorher drauf gekommen?....)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück