Java 设置int[index]=矩阵[index][otherindex]

Java 设置int[index]=矩阵[index][otherindex],java,matrix,sudoku,Java,Matrix,Sudoku,这只是一个解决索杜库难题的附带项目,但这个问题一直困扰着我。我通常会想办法解决这个问题,但我已经到了想知道为什么这不起作用的地步。我不知道你是如何得到输出的,这不是你的代码给出的。无论如何 您不需要数组[i+j],因为它会给您0到4之间的值,并带有重复。您希望遍历数组的每个元素,所以使用array[i*3+j]。此外,您不需要矩阵[i][i],而是矩阵[i][j],但我认为这只是一个打字错误。首先,矩阵[i][i];这几乎肯定不是您想要做的,因为它只会获取对角线值。此外,您正在多次覆盖多个目标数

这只是一个解决索杜库难题的附带项目,但这个问题一直困扰着我。我通常会想办法解决这个问题,但我已经到了想知道为什么这不起作用的地步。

我不知道你是如何得到输出的,这不是你的代码给出的。无论如何


您不需要数组[i+j],因为它会给您0到4之间的值,并带有重复。您希望遍历数组的每个元素,所以使用array[i*3+j]。此外,您不需要矩阵[i][i],而是矩阵[i][j],但我认为这只是一个打字错误。

首先,矩阵[i][i];这几乎肯定不是您想要做的,因为它只会获取对角线值。此外,您正在多次覆盖多个目标数组值。数组[i+j]仅到达数组[4]。您如何将值放入其余的插槽中?哪个数独来自[0,9]?我总是能看到[1,9]@Mohsen_Fatemi的范围,实际上是[0,8]。要说明你做错了什么,请添加一条打印语句,这样你就可以看到发生了什么。这就是所谓的。请参见上的示例。非常感谢!这让我很烦!我还试图修改代码,使其不涉及我在程序其余部分设置的许多不必要的变量。我这样做一定把我的输出搞砸了,但这解决了它:
00 01 02 43 44 45 86 87 88 
00 01 02 43 44 45 86 87 88 
 int index = 0;
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      array[index] = matrix[i][j];
      index++;
    }
  }