這不是一個答案,但延伸到我的評論暗示的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