gpt4 book ai didi

java - 检查二维数组Java中的行和列中是否存在数字

转载 作者:行者123 更新时间:2023-12-05 07:04:56 28 4
gpt4 key购买 nike

我正在尝试制作一个生成随机数独的程序。该程序验证一个数字在行和列中没有重复,

verifyExistNumberInRow --> 完美运行

但是当调用verifyExistNumberInColumn时-->无限循环

为什么,我没有找到解决方案,是索引问题吗?还是值(value)问题?

谢谢。

/**
* Generate a random Sudoku
*/

private static void generateRandomSudoku() {

Integer[][] array = new Integer[9][9];
Integer number;

for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {

do {
number = (int) (Math.random() * 9) + 1;

} while (verifyExistNumberInRow(number, array[i]) || verifyExistNumberInColumn(j, number, array));

array[i][j] = number;
}
}

for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.print("\n");
}
}

/**
* Check if a number exist in array file.
*
* @param number
* @param array
* @return True if exist, other false.
*/
private static boolean verifyExistNumberInRow(Integer number, Integer[] array) {

return Stream.of(array)
.filter(Objects::nonNull)
.anyMatch(element -> element.equals(number));
}

/**
* Check if a number exist in array column
*
* @param position column number
* @param number number to find in column
* @param array
* @return true if exist, other false
*/
private static boolean verifyExistNumberInColumn(Integer position, Integer number, Integer[][] array) {

for (int i = 0; i < array.length; i++) {
if (array[i][position] != null) {

if (array[i][position].equals(number)) {
return true;
}
}
}
return false;
}

最佳答案

尝试颠倒'position'和'i'的位置并添加“i < array[position].length”:

private static boolean verifyExistNumberInColumn(Integer position, Integer number, Integer[][] array) {

for (int i = 0; i < array[position].length; i++) {
if (array[position][i] != null) {

if (array[position][i].equals(number)) {
return true;
}
}
}
return false;
}

关于java - 检查二维数组Java中的行和列中是否存在数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62838402/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com