Java 检查网格中的行或列中的数字重复

Java 检查网格中的行或列中的数字重复,java,grid,repeat,Java,Grid,Repeat,我必须做一个数独板和网格,但我不知道如何检查一行或一列的重复。我的网格的代码是 for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { grid[i][j] = new JTextField(); BoardPanel.add(grid[i][j]); 基本上,我想检查i和j之间的重复,下面是代码和示例。 这个程序会告诉你竖条和横条上是否有两个相等的数字

我必须做一个数独板和网格,但我不知道如何检查一行或一列的重复。我的网格的代码是

for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            grid[i][j] = new JTextField();
            BoardPanel.add(grid[i][j]);

基本上,我想检查i和j之间的重复,下面是代码和示例。 这个程序会告诉你竖条和横条上是否有两个相等的数字

public static void main(String args[]) {
    // store your puzzle in puzzle variable.
    int puzzle[][] = {
        {0, 9, 0, 0, 0, 0, 0, 0, 8},
        {0, 0, 3, 2, 0, 7, 0, 9, 0},
        {0, 6, 0, 0, 0, 0, 7, 0, 0},
        {0, 0, 0, 0, 0, 1, 0, 0, 6},
        {0, 0, 5, 4, 3, 2, 1, 0, 0},
        {4, 0, 0, 7, 0, 0, 0, 0, 0},
        {0, 0, 7, 0, 0, 0, 0, 3, 0},
        {0, 2, 0, 9, 0, 8, 6, 0, 0},
        {1, 0, 0, 0, 0, 0, 0, 4, 0}
    };
    testHorizontal(puzzle);
    testVertical(puzzle);
}

public static void testHorizontal(int[][] puzzle) {
    for (int[] arr : puzzle) {
        test(arr);
    }
}

public static void testVertical(int[][] puzzle) {
    int[] cols = new int[puzzle.length];
    for (int i = 0; i < puzzle.length; i++) {
        for (int j = 0; j < puzzle.length; j++) {
            cols[j] = puzzle[i][j];
            test(cols);
        }
    }
}

public static boolean test(int arr[]) {
    boolean flag = false;
    for (int a : arr) {
        for (int b : arr) {
            if (a == b) {
                flag = true;
                System.out.println("equal numbers found.");
                break;
            }
        }
    }
    return flag;
}

将其转储到一个集合中。集合是什么?它是如何工作的?@user3429626是否要检查它所属的行和列中的网格[i][j]是否重复?如果一行中有两个7,则我希望这两个7高亮显示此选项在^2上,而集合将打开。即使首先对数组进行排序,也可以使用On*lgn算法。这是最糟糕的方法。是的,我承认使用集合,但我认为用户是新手@Boris