2016-05-17 7 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); 
} 

выходе из кодекса (важная часть, так как это было в цикле он был повторен с небольшими вариациями несколько раз

W == W && ki == ki && Checkmate == true | Check = false 

Все условия выполнены еще код не выполняется Мысли (все типы переменных правильны, без орфографической ошибки, W относится к цвету куска, ki - первые две буквы имени части («король»), 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))

Смежные вопросы