2016-05-17 88 views
-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是一個布爾數組,包含一個位置被敵方的'攻擊')

+0

請注意,在最後一個條件中,你有一個賦值,而不是一個相等性測試。另外,不需要'if(x == true || y == false)',這就是'if(x ||!y)'。 –

+0

所以你打印出一些值,這對調試很有幫助,但更好的是,嘗試打印出你正在檢查的實際布爾值。例如,嘗試打印boardCopy [x] [y] .getName()。substring(0,2)==「ki」'。即使字符串等於「ki」,結果也可能是錯誤的。 –

回答

0

請注意e,字符串實際上不能使用「==」進行比較,String(a)== String(b) - > False。你需要做boardCopy [x] [y] .getColour()。equals(turn.charAt(0))

相關問題