如何解决一个 int 自动将其值设置为特定数字,而我不打算这样做
我正在尝试创建一个自动生成数独棋盘的代码。首先,我创建一个包含 9 个数组的数组,因为 9 行有 9 列。在第一行,我为每列设置了从 1 到 9 的随机数。此外,我创建了 3 个布尔值,表示该行或该列或该正方形 3x3 中存在该数字。
它成功生成数独,但这里的问题是第 60 行中的 Int i (i = 9) 始终设置为 6 或 7,尽管最后的 else 已完成并且它在一次运行中发生多次。这是代码示例。
希望你们能修复这个错误,谢谢。
import java.util.*;
public class loop {
static int[][] array;
static boolean[][] markRow;
static boolean[][] markColumn;
static boolean[][][] markMatrix;
public static void main(String[] args) {
array = new int[][] {
{0,0},{0,0}
};
markRow = new boolean[9][9];
markColumn = new boolean[9][9];
markMatrix = new boolean[3][3][9];
for (int j = 0; j < 8; j++ ){
Random random = new Random();
int randomnum = random.nextInt(9) + 1;
if (!markRow[0][randomnum-1] && !markColumn[j][randomnum-1] && !markMatrix[0/3][j/3][randomnum-1] ) {
array[0][j] = randomnum;
markRow[0][randomnum-1] = true;
markColumn[j][randomnum-1] = true;
markMatrix[0/3][j/3][randomnum-1] = true;
}else {
j--;
}
}
solver(0,0);
}
public static void solver(int i,int j){
if (i < 9 && j < 9){
if(array[i][j] == 0){
for (int z = 1; z <= 9 ; z++){
if (!markRow[i][z-1] && !markColumn[j][z-1] && !markMatrix[i/3][j/3][z-1]){
markRow[i][z-1] = true;
markColumn[j][z-1] = true;
markMatrix[i/3][j/3][z-1] = true;
array[i][j] = z;
solver(i,j + 1);
markRow[i][z-1] = false;
markColumn[j][z-1] = false;
markMatrix[i/3][j/3][z-1] = false;
array[i][j] = 0;
}
}
}
else{
solver(i,j + 1);
}
}
else if (i < 9 && j >= 9){
solver(i + 1,0);
}
else{
printresult();
}
}
public static void printresult(){
for (int x = 0; x < 9 ; x++){
System.out.println(Arrays.toString(array[x]));
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。