2-D数组不改变While循环中的值

时间:2017-03-25 20:04:16

标签: java arrays sudoku

由于某种原因,2D实例整数数组不会在while循环中将其变量的值更改为0。 board是另一个带有完整数独板的2D int数组,solve_1通过开始测试从1到9来解决数独,并且通过回溯方法解决从9到1的解析,两者都正常工作。因此,如果有多个解决方案,则两种方法的2D阵列输出model_1和model_2将有所不同。 2D阵列拼图存储最后一个独特的数独网格。 print方法输出数组,但是没有一个方块变为0,尽管循环经历无限次迭代而没有堆栈溢出,即到达注释行但不会将任何int更改为0.该行在循环外工作,当然只有一次。< / p>

private void makePuzzle() {
    model = board;
    int row, col;
    while (Arrays.deepEquals(model_1, model_2)) {
        puzzle = model;
        row = r.nextInt(9);
        col = r.nextInt(9);
        model[row][col] = 0; //this line is problematic
        solve1(0, 0);
        solve2(0, 0);
        System.out.println(row+" "+col);
        print(model);
    }
}

1 个答案:

答案 0 :(得分:0)

我不太了解它,但我认为问题是你应该将board值作为参数传递给方法,就像makePuzzle(board)

除非你将board变量设为全局变量,否则它不应该在方法中包含值。因为java认为内板与外板不一样