Java 混合然后打印阵列,但它们最终都是一样的?
我在做一个数独游戏。我有一个数组拼图[]][]],包含其他九个数组zone1[]]]-zone9[]],每个数组最初包含{{1,2,3}、{4,5,6}、{7,8,9}},它们是从zone1.clone中分配的值,所以这不是一个引用问题 我将这些值与:Java 混合然后打印阵列,但它们最终都是一样的?,java,arrays,Java,Arrays,我在做一个数独游戏。我有一个数组拼图[]][]],包含其他九个数组zone1[]]]-zone9[]],每个数组最初包含{{1,2,3}、{4,5,6}、{7,8,9}},它们是从zone1.clone中分配的值,所以这不是一个引用问题 我将这些值与: Random rand = new Random(); for(int z = 0; z < 9; z++) //cycles through zones { for(int i = 0; i < 3; i++) //cycl
Random rand = new Random();
for(int z = 0; z < 9; z++) //cycles through zones
{
for(int i = 0; i < 3; i++) //cycles through zone rows
{
for(int j = 0; j < 3; j++) //cycles through zone columns
{
int temp = puzzle[z][i][j];
int newI = rand.nextInt(3);
int newJ = rand.nextInt(3);
puzzle[z][i][j] = puzzle[z][newI][newJ];
puzzle[z][newI][newJ] = temp;
}
}
}
我相信这很简单,但我就是看不到
编辑:好的,这是打印部分
char[][] display = {{'/','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\\'},
{'|',' ',(char)('0' + puzzle[0][0][0]),' ',(char)('0' + puzzle[0][0][1]),' ',(char)('0' + puzzle[0][0][2]),' ','|',' ',(char)('0' + puzzle[1][0][0]),' ',(char)('0' + puzzle[1][0][1]),' ',(char)('0' + puzzle[1][0][2]),' ','|',' ',(char)('0' + puzzle[2][0][0]),' ',(char)('0' + puzzle[2][0][1]),' ',(char)('0' + puzzle[2][0][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[0][1][0]),' ',(char)('0' + puzzle[0][1][1]),' ',(char)('0' + puzzle[0][1][2]),' ','|',' ',(char)('0' + puzzle[1][1][0]),' ',(char)('0' + puzzle[1][1][1]),' ',(char)('0' + puzzle[1][1][2]),' ','|',' ',(char)('0' + puzzle[2][1][0]),' ',(char)('0' + puzzle[2][1][1]),' ',(char)('0' + puzzle[2][1][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[0][2][0]),' ',(char)('0' + puzzle[0][2][1]),' ',(char)('0' + puzzle[0][2][2]),' ','|',' ',(char)('0' + puzzle[1][2][0]),' ',(char)('0' + puzzle[1][2][1]),' ',(char)('0' + puzzle[1][2][2]),' ','|',' ',(char)('0' + puzzle[2][2][0]),' ',(char)('0' + puzzle[2][2][1]),' ',(char)('0' + puzzle[2][2][2]),' ','|'},
{'|','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','|'},
{'|',' ',(char)('0' + puzzle[3][0][0]),' ',(char)('0' + puzzle[3][0][1]),' ',(char)('0' + puzzle[3][0][2]),' ','|',' ',(char)('0' + puzzle[4][0][0]),' ',(char)('0' + puzzle[4][0][1]),' ',(char)('0' + puzzle[4][0][2]),' ','|',' ',(char)('0' + puzzle[5][0][0]),' ',(char)('0' + puzzle[5][0][1]),' ',(char)('0' + puzzle[5][0][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[3][1][0]),' ',(char)('0' + puzzle[3][1][1]),' ',(char)('0' + puzzle[3][1][2]),' ','|',' ',(char)('0' + puzzle[4][1][0]),' ',(char)('0' + puzzle[4][1][1]),' ',(char)('0' + puzzle[4][1][2]),' ','|',' ',(char)('0' + puzzle[5][1][0]),' ',(char)('0' + puzzle[5][1][1]),' ',(char)('0' + puzzle[5][1][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[3][2][0]),' ',(char)('0' + puzzle[3][2][1]),' ',(char)('0' + puzzle[3][2][2]),' ','|',' ',(char)('0' + puzzle[4][2][0]),' ',(char)('0' + puzzle[4][2][1]),' ',(char)('0' + puzzle[4][2][2]),' ','|',' ',(char)('0' + puzzle[5][2][0]),' ',(char)('0' + puzzle[5][2][1]),' ',(char)('0' + puzzle[5][2][2]),' ','|'},
{'|','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','|'},
{'|',' ',(char)('0' + puzzle[6][0][0]),' ',(char)('0' + puzzle[6][0][1]),' ',(char)('0' + puzzle[6][0][2]),' ','|',' ',(char)('0' + puzzle[7][0][0]),' ',(char)('0' + puzzle[7][0][1]),' ',(char)('0' + puzzle[7][0][2]),' ','|',' ',(char)('0' + puzzle[8][0][0]),' ',(char)('0' + puzzle[8][0][1]),' ',(char)('0' + puzzle[8][0][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[6][1][0]),' ',(char)('0' + puzzle[6][1][1]),' ',(char)('0' + puzzle[6][1][2]),' ','|',' ',(char)('0' + puzzle[7][1][0]),' ',(char)('0' + puzzle[7][1][1]),' ',(char)('0' + puzzle[7][1][2]),' ','|',' ',(char)('0' + puzzle[8][1][0]),' ',(char)('0' + puzzle[8][1][1]),' ',(char)('0' + puzzle[8][1][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[6][2][0]),' ',(char)('0' + puzzle[6][2][1]),' ',(char)('0' + puzzle[6][2][2]),' ','|',' ',(char)('0' + puzzle[7][2][0]),' ',(char)('0' + puzzle[7][2][1]),' ',(char)('0' + puzzle[7][2][2]),' ','|',' ',(char)('0' + puzzle[8][2][0]),' ',(char)('0' + puzzle[8][2][1]),' ',(char)('0' + puzzle[8][2][2]),' ','|'},
{'\\','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','/'}};
for(int i = 0; i < 13; i++)
{
for(int j = 0; j < 25; j++)
{
System.out.print(display[i][j]);
}
System.out.println();
}
感谢您添加显示代码!我很优雅地把它归为一类:
import java.util.Random;
public class SudokuArray
{
public static void main(String[] args)
{
new SudokuArray();
}
public SudokuArray()
{
int[][][] puzzle = {{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}}};
Random rand = new Random();
for(int z = 0; z < 9; z++) //cycles through zones
{
for(int i = 0; i < 3; i++) //cycles through zone rows
{
for(int j = 0; j < 3; j++) //cycles through zone columns
{
int temp = puzzle[z][i][j];
int newI = rand.nextInt(3);
int newJ = rand.nextInt(3);
puzzle[z][i][j] = puzzle[z][newI][newJ];
puzzle[z][newI][newJ] = temp;
}
}
}
char[][] display = {{'/','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\\'},
{'|',' ',(char)('0' + puzzle[0][0][0]),' ',(char)('0' + puzzle[0][0][1]),' ',(char)('0' + puzzle[0][0][2]),' ','|',' ',(char)('0' + puzzle[1][0][0]),' ',(char)('0' + puzzle[1][0][1]),' ',(char)('0' + puzzle[1][0][2]),' ','|',' ',(char)('0' + puzzle[2][0][0]),' ',(char)('0' + puzzle[2][0][1]),' ',(char)('0' + puzzle[2][0][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[0][1][0]),' ',(char)('0' + puzzle[0][1][1]),' ',(char)('0' + puzzle[0][1][2]),' ','|',' ',(char)('0' + puzzle[1][1][0]),' ',(char)('0' + puzzle[1][1][1]),' ',(char)('0' + puzzle[1][1][2]),' ','|',' ',(char)('0' + puzzle[2][1][0]),' ',(char)('0' + puzzle[2][1][1]),' ',(char)('0' + puzzle[2][1][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[0][2][0]),' ',(char)('0' + puzzle[0][2][1]),' ',(char)('0' + puzzle[0][2][2]),' ','|',' ',(char)('0' + puzzle[1][2][0]),' ',(char)('0' + puzzle[1][2][1]),' ',(char)('0' + puzzle[1][2][2]),' ','|',' ',(char)('0' + puzzle[2][2][0]),' ',(char)('0' + puzzle[2][2][1]),' ',(char)('0' + puzzle[2][2][2]),' ','|'},
{'|','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','|'},
{'|',' ',(char)('0' + puzzle[3][0][0]),' ',(char)('0' + puzzle[3][0][1]),' ',(char)('0' + puzzle[3][0][2]),' ','|',' ',(char)('0' + puzzle[4][0][0]),' ',(char)('0' + puzzle[4][0][1]),' ',(char)('0' + puzzle[4][0][2]),' ','|',' ',(char)('0' + puzzle[5][0][0]),' ',(char)('0' + puzzle[5][0][1]),' ',(char)('0' + puzzle[5][0][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[3][1][0]),' ',(char)('0' + puzzle[3][1][1]),' ',(char)('0' + puzzle[3][1][2]),' ','|',' ',(char)('0' + puzzle[4][1][0]),' ',(char)('0' + puzzle[4][1][1]),' ',(char)('0' + puzzle[4][1][2]),' ','|',' ',(char)('0' + puzzle[5][1][0]),' ',(char)('0' + puzzle[5][1][1]),' ',(char)('0' + puzzle[5][1][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[3][2][0]),' ',(char)('0' + puzzle[3][2][1]),' ',(char)('0' + puzzle[3][2][2]),' ','|',' ',(char)('0' + puzzle[4][2][0]),' ',(char)('0' + puzzle[4][2][1]),' ',(char)('0' + puzzle[4][2][2]),' ','|',' ',(char)('0' + puzzle[5][2][0]),' ',(char)('0' + puzzle[5][2][1]),' ',(char)('0' + puzzle[5][2][2]),' ','|'},
{'|','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','+','-','-','-','-','-','-','-','|'},
{'|',' ',(char)('0' + puzzle[6][0][0]),' ',(char)('0' + puzzle[6][0][1]),' ',(char)('0' + puzzle[6][0][2]),' ','|',' ',(char)('0' + puzzle[7][0][0]),' ',(char)('0' + puzzle[7][0][1]),' ',(char)('0' + puzzle[7][0][2]),' ','|',' ',(char)('0' + puzzle[8][0][0]),' ',(char)('0' + puzzle[8][0][1]),' ',(char)('0' + puzzle[8][0][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[6][1][0]),' ',(char)('0' + puzzle[6][1][1]),' ',(char)('0' + puzzle[6][1][2]),' ','|',' ',(char)('0' + puzzle[7][1][0]),' ',(char)('0' + puzzle[7][1][1]),' ',(char)('0' + puzzle[7][1][2]),' ','|',' ',(char)('0' + puzzle[8][1][0]),' ',(char)('0' + puzzle[8][1][1]),' ',(char)('0' + puzzle[8][1][2]),' ','|'},
{'|',' ',(char)('0' + puzzle[6][2][0]),' ',(char)('0' + puzzle[6][2][1]),' ',(char)('0' + puzzle[6][2][2]),' ','|',' ',(char)('0' + puzzle[7][2][0]),' ',(char)('0' + puzzle[7][2][1]),' ',(char)('0' + puzzle[7][2][2]),' ','|',' ',(char)('0' + puzzle[8][2][0]),' ',(char)('0' + puzzle[8][2][1]),' ',(char)('0' + puzzle[8][2][2]),' ','|'},
{'\\','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','/'}};
for(int i = 0; i < 13; i++)
{
for(int j = 0; j < 25; j++)
{
System.out.print(display[i][j]);
}
System.out.println();
}
}
}
因此,您的代码片段完成了它们的工作,尽管生成的板对数独无效。问题出在别处。此解决方案只需一个随机值和一个循环即可启动谜题生成
for(byte r = zero, c; nine > r; r ++) {
if(three == r || six == r) {
rand = maze[r - three][zero];
rand = nine == rand ? one : (byte)(rand + one);
} else {
rand = zero < r ? maze[r - one][six] : rand;
}
for(c = zero; nine > c; c ++) {
maze[r][c] = rand;
rand = nine == rand ? one : (byte)(rand + one);
}
}
这是my github存储库链接:
现场投票关闭,因为这是一个调试问题,但我不确定它是否属于StackOverflow,因为这是一个典型的错误示例,只需正确使用调试器即可发现。您为您的board generator提供了源代码,真是太好了。您还应该为您的board printing算法提供源代码。我省略了它,因为它很长,但基本上,我将puzzle[][]的每个值分别添加到一个二维字符数组中,以及边框,然后使用嵌套for循环打印整个数组。我认为问题不在那里。只需在谷歌上搜索一些基本的Java调试教程。外面有很多。可能是重复的
$ java SudokuArray
/-----------------------\
| 4 1 2 | 6 2 3 | 1 6 7 |
| 5 6 7 | 9 4 8 | 2 5 3 |
| 9 8 3 | 5 1 7 | 8 4 9 |
|-------+-------+-------|
| 3 4 2 | 5 2 3 | 3 1 5 |
| 7 8 5 | 4 6 1 | 7 4 9 |
| 9 6 1 | 8 9 7 | 6 2 8 |
|-------+-------+-------|
| 5 6 1 | 6 5 8 | 8 1 7 |
| 9 3 8 | 3 9 2 | 5 2 3 |
| 2 4 7 | 4 7 1 | 9 4 6 |
\-----------------------/
for(byte r = zero, c; nine > r; r ++) {
if(three == r || six == r) {
rand = maze[r - three][zero];
rand = nine == rand ? one : (byte)(rand + one);
} else {
rand = zero < r ? maze[r - one][six] : rand;
}
for(c = zero; nine > c; c ++) {
maze[r][c] = rand;
rand = nine == rand ? one : (byte)(rand + one);
}
}