java - 为什么当我插入任何与 ""不同的字符串时它返回 true

标签 java equals

这是我的第一个问题,对于任何错误,我深表歉意。我正在编写一个井字游戏。我对此有疑问。

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;
}

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

最佳答案

我已经在 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;
}

这是我的测试类(class):

public class Test {

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

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

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

}

}

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

关于java - 为什么当我插入任何与 ""不同的字符串时它返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43305952/

相关文章:

java - Log4j2:如何为每个用户将日志写入单独的文件?

java - MVC 模式和 Swing

java - Play 应用中 POST 的内部重定向?

java - 单击 TextView 时我的应用程序崩溃

java - 如何在 Java 中为 Tree 正确实现 equals(), hashCode()?

java - 阻止 objectweb asm 用 throw 替换无法访问的代码

C# Overriding Equals using "as"和用于正确性、灵活性和性能的专门方法

java - 我创建的 equals() 和 hashcode() 没有做任何事情

python - 使用 `is` 检查空字符串

java - 获取 equals 函数中使用的所有实例字段的名称