【发布时间】: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