检查所有 9 位数字是否在 java 中的 3*3 二维数组中
Check if all 9 digits are in 3*3 2d array in java
我正在处理必须检查所有 9 位数字是否都在 3x3 矩阵中的问题。
我知道我应该遍历 3x3 矩阵并检查每个数字是否为数字。
这是我的代码,但我没有相关说明。
public boolean find(int num) {
int []a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i = 0; i < a.length; i++)
if (a[i] == num)
return true;
return false;
}
public boolean allDigit() {
boolean isDigit = true;
for (int i = 0; i< _3x3.length; i++) {
for(int j = 0; j < _3x3[i].length; j++) {
if (!find(_3x3[i][j]))
isDigit = false;
}
}
}
提供的代码包含几个拼写错误:
find
中 num
参数的类型必须是 int
- 方法
allDigit
应该returnisDigit
到底
- 输入矩阵
_3x3
需要在某处定义和填充,或者作为参数传递给 allDigit
。
解决上述问题后,代码应检测 all _3x3
数组中的数字是否属于闭范围 [1, 9]
,即,如果输入矩阵在其所有单元格中包含 1
,代码 returns true
.
但是,如果任务的目的是检查输入矩阵是否包含所有数字,即不存在重复条目,那么单独的find
方法不应该被调用。相反,需要一个布尔数组来检查重复条目:
public boolean allDigitsPresent(int[][] arr) {
boolean[] digitSet = new boolean[10];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
int d = arr[i][j]; // digit
if (d <= 0 || d >= digitSet.length) {
return false; // invalid value in the matrix
}
if (digitSet[d]) { // already set, duplicate is found
return false;
}
digitSet[d] = true;
}
}
return true; // no duplicate digit is found, all digits are in range [1..9]
}
我正在处理必须检查所有 9 位数字是否都在 3x3 矩阵中的问题。
我知道我应该遍历 3x3 矩阵并检查每个数字是否为数字。
这是我的代码,但我没有相关说明。
public boolean find(int num) {
int []a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i = 0; i < a.length; i++)
if (a[i] == num)
return true;
return false;
}
public boolean allDigit() {
boolean isDigit = true;
for (int i = 0; i< _3x3.length; i++) {
for(int j = 0; j < _3x3[i].length; j++) {
if (!find(_3x3[i][j]))
isDigit = false;
}
}
}
提供的代码包含几个拼写错误:
find
中num
参数的类型必须是int
- 方法
allDigit
应该returnisDigit
到底 - 输入矩阵
_3x3
需要在某处定义和填充,或者作为参数传递给allDigit
。
解决上述问题后,代码应检测 all _3x3
数组中的数字是否属于闭范围 [1, 9]
,即,如果输入矩阵在其所有单元格中包含 1
,代码 returns true
.
但是,如果任务的目的是检查输入矩阵是否包含所有数字,即不存在重复条目,那么单独的find
方法不应该被调用。相反,需要一个布尔数组来检查重复条目:
public boolean allDigitsPresent(int[][] arr) {
boolean[] digitSet = new boolean[10];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
int d = arr[i][j]; // digit
if (d <= 0 || d >= digitSet.length) {
return false; // invalid value in the matrix
}
if (digitSet[d]) { // already set, duplicate is found
return false;
}
digitSet[d] = true;
}
}
return true; // no duplicate digit is found, all digits are in range [1..9]
}