Это не ответ, а расширение моего комментария, предлагающее SSCCE. Я взял код из вопроса и завернул его в простую тестовую программу. Чтобы завершить метод isValidMove, я добавил возврат valid
и }
.
Он печатает row=0, col=0: true
. Это подтверждает, что ошибка не указана в коде, указанном в вопросе.
Следующим шагом является то, что OP может либо изменить это, пока оно не воспроизведет проблему, либо не упростит остальную часть программы OP до тех пор, пока она не станет длинной. В любом случае цель - это краткая простая программа, которая компилирует, запускает и демонстрирует проблему. Часто попытка написать такую вещь вызовет ошибку. Если этого не произойдет, публикация SSCCE, безусловно, получит полезный ответ.
public class Test
{
private static boolean[][] takenSquare = new boolean[3][3];
public static void main(String[] args) {
System.out.println("row=0, col=0: "+isValidMove(0,0));
}
public static boolean isValidMove(int row, int col) {
boolean valid = false;
if (row >= 0 && row < 3 && col >= 0 && col < 3) {
if (takenSquare[row][col] == false) {
valid = true;
}
}
return valid;
}
}
=========================================== =================================
Вот пересмотренная версия моей тестовой программы, которая демонстрирует инструмент isValidMove, так что ясно, какие аргументы он передал, что это возвращается, и почему он возвращает false в любое время.
public class Test
{
private static boolean[][] takenSquare = new boolean[3][3];
public static void main(String[] args) {
takenSquare[1][1] = true;
test(0,0);
test(0,-1);
test(1,1);
}
private static void test(int row, int col){
System.out.println("Test result: row="+row+", col="+col+", valid="+isValidMove(row, col));
}
public static boolean isValidMove(int row, int col) {
boolean valid = false;
if (row >= 0 && row < 3 && col >= 0 && col < 3) {
if (takenSquare[row][col] == false) {
valid = true;
} else {
System.out.println("isValidMove square already taken for row="+row+", col="+col);
}
} else {
System.out.println("isValidMove out of range argument row="+row+" col="+col);
}
System.out.println("Returning "+valid+" from isValidMove("+row+","+col+")");
return valid;
}
}
Как насчет 'col'? – Maroun
Код, который вы показываете, не пытается вообще ничего вернуть. – NPE
Я предполагаю, что у вас есть 'return valid;' в конце, правильно? – dasblinkenlight