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