【发布时间】:2016-12-01 13:36:08
【问题描述】:
我正在尝试一个简单的数独程序。我首先在 3D 中取值 数组,然后使用 mr.serpardum 的方法将它们复制到一维数组中。 我知道在我试图查找的地方有一个错误
重复元素,因为即使我给出与输入相同的数字输出 说“它是数独”,但我找不到它......显然我无法添加任何 图片因为我没有足够的学分
public class SecondAssignment {
@SuppressWarnings("unused")
public static void main(String[] args) throws IOException {
int i = 0, j = 0, k = 0;
boolean result = false;
int arr1[][];
arr1 = new int[3][3];
int arr2[];
arr2 = new int[9];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the elements in the sudoku block");
//getting elements into array
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
arr1[i][j] = Integer.parseInt(br.readLine());
}
}
//printing it in matrix form
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
System.out.print(arr1[i][j] + "\t");
}
System.out.println(" ");
}
//copying array1 elements into array 2
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
arr2[i * 3 + j] = arr1[i][j];
}
}
//finding duplicate elements
for (i = 0; i < arr2.length; i++) {
for (int m = i + 1; m < arr2.length; m++) {
if (arr2[i] == (arr2[m])) {
System.out.println("Not a sudoku");
//result = true;
} else {
System.out.println("Its a sudoku");
//result = false;
}
}
}
}
}
【问题讨论】:
-
首先,您当前的数独检查肯定是错误的。注释掉的更接近,但不完全在那里。您应该将
boolean isSudoku设置为true,然后如果您在嵌套的for的if中找到重复项,请将其设置为false。您遇到此逻辑错误的原因是因为您在每次检查时都设置了布尔值,无论是真还是假。 -
是的,在查看了我的输出后,我知道我在每次检查时都在设置它,我试图纠正它,但它并没有完全解决,我又回到了原点......但是嘿,你是对,我试过你的解决方案,它奏效了......非常感谢:) :) :)
标签: java duplicates elements