В настоящее время в процессе создания шахматной игры, создавая код для «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 - это булевский массив, содержащий место «атакован» вражеской фигурой.)
Обратите внимание, что в последнем условии у вас есть задание, а не тест равенства. Кроме того, нет необходимости в 'if (x == true || y == false)', это просто 'if (x ||! Y)'. –
Итак, вы печатаете некоторые из значений, которые хороши для отладки, но даже лучше, попробуйте распечатать фактические логические значения, которые вы проверяете. Например, попробуйте напечатать 'boardCopy [x] [y] .getName(). Substring (0,2) ==" ki "'. Результат может быть ложным, даже если строка равна «ki». –