二维 int 数组打印一行值,而不仅仅是一个
Posted
技术标签:
【中文标题】二维 int 数组打印一行值,而不仅仅是一个【英文标题】:Two Dimensional int array prints row of values rather than just one 【发布时间】:2017-05-19 21:24:24 【问题描述】:所以我有一个给定大小的二维 int 数组。我想将值 1 分配给此数组中的特定位置。我正在使用另一个数组的输出值。像这样:
public void printQueens()
int k = queens[0];
board[1][queens[0]] = 1;
System.out.print(queens[1]);
k 值是为了确保它是一个整数值。皇后数组是给定大小的一维整数数组。例如。 6,7,2,4
queens = new int[NUM_QUEEN];
它是在反向跟踪方法中创建的:
public void backtrack(int row)
for(int i = 0; i<BOARD_SIZE; i++)
if(canPlace(row,i))
queens[row] = i;
if(row == NUM_QUEEN-1)
printQueens();
else
backtrack(row+1);
我期望的输出是第一行和皇后[0] 列中的一个(在本例中为 7)。输出是第一行中的一行:
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
如果我将 7 放入而不是 Queens[0] 输出是正确的:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
所以我的问题是为什么会这样?如果常规显式整数有效,为什么隐式整数无效?
【问题讨论】:
board[1][k] = 1;
不可能更新整行。请发帖minimal reproducible example。
不太确定我还能如何验证。也许是截图?
不,请不要。只需包含重现问题所需的最少代码。有关详细信息,请参阅上面的链接。
我刚刚进行了编辑,试图进一步解释皇后的来源。希望这会有所帮助,我知道它看起来很模糊。感谢您的建议
"k 值是为了确保它是一个整数值。" “它”还有什么其他价值? “它”的先行词是什么?
【参考方案1】:
嗯...我试图理解你的问题。这是执行您想要的代码的建议(如果我理解问题)。
public static void main(String[] args)
int boardSize = 8;
int queens[] = 6, 7, 2, 4;
int board[][] = 0, 0, 0, 0 , 0, 0, 0, 0,
0, 0, 0, 0 , 0, 0, 0, 0,
0, 0, 0, 0 , 0, 0, 0, 0,
0, 0, 0, 0 , 0, 0, 0, 0,
0, 0, 0, 0 , 0, 0, 0, 0,
0, 0, 0, 0 , 0, 0, 0, 0,
0, 0, 0, 0 , 0, 0, 0, 0,
0, 0, 0, 0 , 0, 0, 0, 0;
int k = queens[0];
board[1][k] = 1;
for (int row = 0; row < boardSize; row++)
for (int col = 0; col < boardSize; col++)
System.out.print(board[row][col] + " ");
System.out.println();
输出是
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
【讨论】:
感谢您的回答!我已经从字面上尝试了您的确切代码并得到了一排代码。显然我缺少一些东西!我想有人可能知道关于这个特定代码的某个“故障”。不过谢谢! 你的环境是什么(操作系统、IDE、JDK)?【参考方案2】:女王的阵列从未被重置。因此,当我使用皇后数组时,由于递归,它只是将每个值叠加在一起。
【讨论】:
以上是关于二维 int 数组打印一行值,而不仅仅是一个的主要内容,如果未能解决你的问题,请参考以下文章
C 语言数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )