我正在测试我的Sudoku程序的一部分来测试该行是否有效。来自file方法的板生成一个9x9阵列,但是我无法理解为什么当我尝试运行这个isValidRow()方法时,没有任何迹象表明它是真或假。为什么会这样?
public static boolean isValidRow(int[][] grid, int row) {
int i = 0;
int j = 0;
while (i < 9){
while (j < 9){
if (grid[row][i] == grid[row][j]){
if (i == j){
continue;
}
return false;
}
j++;
}
i++;
}
System.out.println("hii");
return true;
}
public static void main(String[] args) throws IOException {
int[][] board = new int[9][9];
boardFromFile(board, "sudoku.txt");
System.out.println(isValidRow(board, 0));
}
答案 0 :(得分:2)
isValidRow()
中有一个无限循环。
当您第一次调用此函数时,i
和j
都为零(0)。因此,
if (grid[row][i] == grid[row][j])
将始终评估为true
。将会:
if (i == j)
下一步行动是:
continue;
将再次启动内部while
循环。由于i
和j
不变,同样的事情会一次又一次地发生。