我正在尝试在java中实现Sudoko。
(有一个打印矩阵的Gui类。)
这是我写的关于矩阵行(9X9)的两种方法的例子。
当一个单元格中有“-1”时,该方法会在那里放置一个未出现在特定行中的数字,如果已经有一个数字,则它会将索引位置的布尔数组更新为“true”等于数字(数字可以在1-9之间)。
它在4次循环后停止,我很难意识到原因。
有人能看出什么问题吗?也许是理解某事的错误?
public static boolean checkRow(int row, int[][] matr) {
boolean[] ind = new boolean[9];
Arrays.fill(ind, false);
for (int j = 0; j <= 8; j++) {
if (matr[row][j] == -1) {
int n = whatToputRow(row, matr);
if (n == 0) {
return false;
} else {
matr[row][j] = n;
ind[n - 1] = true;
System.out.print(n+" ");
}
} else {
ind[matr[row][j] - 1] = true;
}
}
return checkBoolean(ind);
}
public static boolean checkBoolean(boolean[] mat) {
for (int i = 0; i <= 8; i++) {
if (!mat[i]) {
return false;
}
}
return true;
}
public static int whatToputRow(int row, int[][] mat) {
for (int number = 1; number <= 9; number++) {
boolean bool = false;
int i = 0;
while (!bool && i <= 8) {
if (mat[row][i] == number) {
bool = true;
} else {
i = i + 1;
}
}
if (bool == false)
return number;
}
return 0;
}
答案 0 :(得分:2)
我怀疑whatToPutRow()
在第4次迭代后返回0。当您在该条件下返回false时,循环将停止运行。