Überprüfen von Strings schlägt fehl

Benni1000

Mitglied
Hallo Leute ich habe mich an einem simplen tic-tac-toe spiel versucht.
Leider erkennt das Spiel nicht wenn ein Feld schon belegt ist.
Hier ist der Source:

TicTacToe.java
Java:
package tictactoe;

import java.util.Scanner;

public class TicTacToe {
    public static void main(String[] args) {
        int i = 0;
        while(i<1) {
            //main loop
            System.out.println("----------------------");
            System.out.println("-(1) Start Game      -");
            System.out.println("-(2) Exit  Game      -");
            System.out.println("----------------------");
            Scanner sc = new Scanner(System.in);
            int choose = sc.nextInt();
            switch (choose) {
                case 1:
                      startGame(); 
                case 2:
                      i++;
            }
        }
    }

    private static void startGame() {
        Scanner gm = new Scanner(System.in);
        System.out.println("Please enter name1:");
        String name1 = gm.nextLine();
        System.out.println("Please enter name2:");
        String name2 = gm.nextLine();
        game g = new game(name1,name2);
        g.StartGame();
    }
}

game.java
Java:
package tictactoe;

import java.util.Scanner;

public class game {
    private String[] field = {"","1","2","3","4","5","6","7","8","9"};
    private int turn = 1;
    private String name1u,name2u;
    public game(String name1,String name2) {
        name1u=name1;
        name2u=name2;
    }
    public void StartGame() {
        Scanner gm = new Scanner(System.in);
        int i = 0;
        while(i<1) {
            System.out.println("===========");
            System.out.println("=["+field[1]+"]["+field[2]+"]["+field[3]+"]=");
            System.out.println("=["+field[4]+"]["+field[5]+"]["+field[6]+"]=");
            System.out.println("=["+field[7]+"]["+field[8]+"]["+field[9]+"]=");
            System.out.println("===========");
            if(fieldFull()) {
                i++;
            }
            if(turn==1){
                move(name1u,"X");
            }
            else{
                move(name2u,"O");
            }
        } 
    }
    private void move(String name,String symbol) {
        Scanner gm = new Scanner(System.in);
        System.out.println("Player "+name+"'s turn!");
                System.out.println("Enter a Number:");
                String in = gm.nextLine();
                if(in.equals("1")||in.equals("2")||in.equals("3")||in.equals("4")||in.equals("5")||in.equals("6")||in.equals("7")||in.equals("8")||in.equals("9")){
                        if(!field[Integer.parseInt(in)].equals("X")||!field[Integer.parseInt(in)].equals("O")) {
                            field[Integer.parseInt(in)]=symbol;
                            if(symbol.equals("X")) {turn=2;}
                            else {turn = 1;}
                        }
                        else {
                    System.out.println("This Field is alredy in use!");
                    if(symbol.equals("X")) {turn=1;}
                    else {turn = 2;}
                }
                    }
                else {
                    System.out.println("You have to use numbers between 1 and 9 !");
                    if(symbol.equals("X")) {turn=1;}
                    else {turn = 2;}
                }
            }
    private Boolean fieldFull() {
        int i = 1,ff=0;
        while(i<8) {
            if(field[i].equals("X")||field[i].equals("O")) {
                ff+=1;
            }
            i++;
        }
        if(ff>9) {
            return true;
        }
        return false;
    }   
}

Das problem ist das diese Zeile nicht erkennt wenn ein feld belegt ist:
Java:
if(!field[Integer.parseInt(in)].equals("X")||!field[Integer.parseInt(in)].equals("O")) {

Wär super von euch wenn ihr euch mein problem ansehen würdet 🙂
 
Nebenbei:

[Java=56]private Boolean fieldFull() [/code]
Ich denke, hier ist boolean (kleingeschrieben) gemeint.
 

Neue Themen


Zurück
Oben