-1
當前在製作國際象棋遊戲的過程中,雖然爲「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是一個布爾數組,包含一個位置被敵方的'攻擊')
請注意,在最後一個條件中,你有一個賦值,而不是一個相等性測試。另外,不需要'if(x == true || y == false)',這就是'if(x ||!y)'。 –
所以你打印出一些值,這對調試很有幫助,但更好的是,嘗試打印出你正在檢查的實際布爾值。例如,嘗試打印boardCopy [x] [y] .getName()。substring(0,2)==「ki」'。即使字符串等於「ki」,結果也可能是錯誤的。 –