【问题标题】:All conditions for If statement met, But it is not executed [duplicate]If语句的所有条件都满足,但没有执行[重复]
【发布时间】:2016-09-12 22:21:47
【问题描述】:

目前在制作国际象棋游戏的过程中,在为“CheckMate”编写代码时,我遇到了一个问题,即即使满足所有条件,if 语句也没有执行。

if (boardCopy[x][y] != null)
{
    System.out.print(boardCopy[x][y].getColour() + " == " + turn.charAt(0)+" && "+ boardCopy[x][y].getName().substring(0,2)+" == ki && Checkmate == "+ CheckMate[x][y]);
    if (boardCopy[x][y].getColour() == turn.charAt(0) && boardCopy[x][y].getName().substring(0,2) == "ki" && CheckMate[x][y])
    { 
        System.out.println(turn + "'s King is in Check");
        check = true;
    }
System.out.println(" | Check = "+check);
}

代码的输出(重要的部分,因为它在一个 for 循环中,它被重复多次,略有变化

W == W && ki == ki && Checkmate == true | Check = false

所有条件均已满足,但代码未执行。想法? (所有变量类型都是正确的,没有拼写错误,W 是指棋子的颜色,ki 是棋子名称的前两个字母('king'),checkmate 是一个布尔数组,包含一个位置被“攻击”的位置' 由敌人的一块。)

【问题讨论】:

  • 请注意,在您的最后一个条件下,您有一个作业,而不是一个相等测试。另外,不需要if (x == true || y == false),只需if (x || !y)。
  • 所以你打印出一些值,这有利于调试,但更好的是,尝试打印出你正在检查的实际布尔值。例如,尝试打印boardCopy[x][y].getName().substring(0,2) == "ki"。结果可能为假,即使字符串等于“ki”。

标签: java if-statement multiple-conditions


【解决方案1】:

请注意,实际上不能使用“==”比较字符串,String(a)== String(b) -> False。你需要做 boardCopy[x][y].getColour().equals(turn.charAt(0))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多