由于某种原因,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);
}
}
答案 0 :(得分:0)
我不太了解它,但我认为问题是你应该将board值作为参数传递给方法,就像makePuzzle(board)
除非你将board变量设为全局变量,否则它不应该在方法中包含值。因为java认为内板与外板不一样