当我插入任何不同的字符串而不是“”时,为什么它返回true

时间:2017-04-09 11:02:08

标签: java equals

这是我在这里的第一个问题,所以我很抱歉任何错误。我正在写一个tic-tac-toe游戏。我有这个问题。

if (!table[0][0].equals(" ") && !table[1][0].equals(" ") && !table[2][0].equals(" ") &&
    !table[0][1].equals(" ") && !table[1][1].equals(" ") && !table[2][1].equals(" ") &&
    !table[0][2].equals(" ") && !table[1][2].equals(" ") && !table[2][2].equals(" ")) {
    System.out.println("Draw!");
    return true;
}

例如:如果我在String中插入任何table[0][0],则会返回true,尽管其他字段为" "

1 个答案:

答案 0 :(得分:0)

我在Board类中初始化了表。这是构造函数:

public Board() {
    sc = new Scanner(System.in);
    board = new Mark[3][3];
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            board[i][j] = new Mark(" ");
        }
    }
}

这是我的checkResult方法:

        public boolean checkResult() {
    if ((table[0][0] == table[1][0] && table[1][0] == table[2][0] && !table[2][0].equals(" "))
            || (table[0][1] == table[1][1] && table[1][1] == table[2][1] && !table[2][1].equals(" "))
            || (table[0][2] == table[1][2] && table[1][2] == table[2][2] && !table[2][2].equals(" "))
            || (table[0][0] == table[0][1] && table[0][1] == table[0][2] && !table[0][2].equals(" "))
            || (table[1][0] == table[1][1] && table[1][1] == table[1][2] && !table[1][2].equals(" "))
            || (table[2][0] == table[2][1] && table[2][1] == table[2][2] && !table[2][2].equals(" "))
            || (table[0][0] == table[1][1] && table[1][1] == table[2][2] && !table[2][2].equals(" "))
            || (table[0][2] == table[1][1] && table[1][1] == table[2][0] && !table[2][0].equals(" "))) {
        System.out.println("You won");

        return true;
    }
    if (!table[0][0].equals(" ") && !table[1][0].equals(" ") && !table[2][0].equals(" ") && !table[0][1].equals(" ")
            && !table[1][1].equals(" ") && !table[2][1].equals(" ") && !table[0][2].equals(" ")
            && !table[1][2].equals(" ") && !table[2][2].equals(" ")) {
        System.out.println("Draw!");
        return true;
    }

    return false;
}

这是我的测试课程:

public class Test {

public static void main(String[] args) {
    Logika lg = new Logika();

    do{
    lg.insertMark2();
    lg.printBoard();

    } while(!(lg.checkResult()));

}

}

当我第一次插入时,程序停止。