Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java If语句的所有条件都满足,但未执行_Java_If Statement_Multiple Conditions - Fatal编程技术网

Java If语句的所有条件都满足,但未执行

Java If语句的所有条件都满足,但未执行,java,if-statement,multiple-conditions,Java,If Statement,Multiple Conditions,目前,在制作国际象棋游戏的过程中,在编写“将死”代码时,我遇到了一个问题,即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 =

目前,在制作国际象棋游戏的过程中,在编写“将死”代码时,我遇到了一个问题,即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是棋子名称(“国王”)的前两个字母,checkmate是一个布尔数组,其中包含一个位置正被敌方棋子“攻击”。)

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

注意,在最后一个条件下,您有一个赋值,而不是一个相等测试。此外,如果(x==true | y==False),则不需要
,这只是
if(x | |!y)
。因此,您正在打印一些值,这对调试很有好处,但更好的是,尝试打印您正在检查的实际布尔值。例如,尝试打印
boardCopy[x][y]。getName()。子字符串(0,2)=“ki”
。即使字符串等于“ki”,结果也可能是错误的。