If语句满足的所有条件,但它不被执行

问题描述:

当前在制作国际象棋游戏的过程中,虽然为“CheckMate”编写代码,但我遇到了if语句未执行的问题,即使所有条件遇到了。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是一个布尔数组,包含一个位置被敌方的'攻击')

+0

请注意,在最后一个条件中,你有一个赋值,而不是一个相等性测试。另外,不需要'if(x == true || y == false)',这就是'if(x ||!y)'。 –

+0

所以你打印出一些值,这对调试很有帮助,但更好的是,尝试打印出你正在检查的实际布尔值。例如,尝试打印boardCopy [x] [y] .getName()。substring(0,2)==“ki”'。即使字符串等于“ki”,结果也可能是错误的。 –

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