Java-帮助编写数独

时间:2011-03-24 17:02:14

标签: java

我正在尝试在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;
}

1 个答案:

答案 0 :(得分:2)

我怀疑whatToPutRow()在第4次迭代后返回0。当您在该条件下返回false时,循环将停止运行。