方法测试并没有打印出来

时间:2015-11-13 01:32:50

标签: java algorithm

我正在测试我的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));
}

1 个答案:

答案 0 :(得分:2)

isValidRow()中有一个无限循环。

当您第一次调用此函数时,ij都为零(0)。因此,

if (grid[row][i] == grid[row][j])

将始终评估为true。将会:

if (i == j)

下一步行动是:

continue;

将再次启动内部while循环。由于ij不变,同样的事情会一次又一次地发生。