【问题标题】:Setting int[index] = matrix[index][otherindex] [closed]设置 int[index] = matrix[index][otherindex] [关闭]
【发布时间】:2016-12-11 23:37:53
【问题描述】:
    int[] array = new int[9];
    int[][] matrix = {  {0,1,2},
                        {3,4,5},
                        {6,7,8}};
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            array[i+j] = matrix[i][i];
        }
    }
    for (int i = 0; i < array.length; i++) {
        System.out.println(array[i]);
    }

所以我希望数组设置为 {0,1,2,3,4,5,6,7,8,9},但输出是

00 01 02 43 44 45 86 87 88 

这只是一个解决数独难题的附带项目,但这个问题一直困扰着我。我通常会尝试找到解决此问题的方法,但我已经到了想知道为什么这不起作用的地步。

【问题讨论】:

  • 对于初学者来说,matrix[i][i]; 几乎肯定不是您想要做的,因为它只会获取对角线值。此外,您还多次覆盖多个目标数组值。
  • array[i+j] 只到达array[4]。您如何设法将值放入其余插槽?
  • 哪个数独来自 [0 , 9] ?我总是看到范围 [1 , 9 ]
  • @Mohsen_Fatemi 实际上是 [0,8]。
  • 为了向您展示您做错了什么,请添加print 声明,以便您查看发生了什么。这称为debugging。请参阅IDEONE 的示例。

标签: java matrix sudoku


【解决方案1】:

我不知道您是如何获得该输出的,这不是您的代码给出的。总之……

您不想要array[i+j],因为这会为您提供从 0 到 4 的值,并且重复。你想遍历array 的每个元素,所以使用array[i*3 + j]。另外,您不想要matrix[i][i],而是想要matrix[i][j],但我认为这只是一个错字。

【讨论】:

  • 非常感谢!这让我很烦恼!我还尝试更改代码,使其不涉及我在程序其余部分中设置的大量不必要的变量。我这样做一定搞砸了我的输出,但这解决了它:)
【解决方案2】:
 int index = 0;
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      array[index] = matrix[i][j];
      index++;
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-14
    • 2014-12-26
    • 2012-02-28
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多