用方法获得的值难以填充2D数组

时间:2019-02-07 10:18:05

标签: java arrays

我无法使用通过迭代方法获得的值来填充矩阵。我想使用3x3矩阵,然后用通过将方法从0迭代到8所获得的值填充它。我的想法是一个for循环,但不幸的是它无法正常工作。如果有人可以提供帮助或有一个我可以查找的链接,我将非常高兴。

int[][] matrix = new int[3][3];

for (int i = 0; i < matrix.length; i++){
  for (int j = 0; j < matrix[i].length; j++){
    for(int a = 0; a < 9; a++) {
      matrix[i][j] = fields.get(a).getSign().getFieldValue();
    }       
  }
}

3 个答案:

答案 0 :(得分:1)

如果我做错了,请纠正我。 我理解您的问题的方式是您想要像这样填充矩阵:

012
345
678

在这种情况下,您可以执行前两个forloop并添加一些数学运算,以获取每个位置的正确数字:

int[][] matrix = new int[3][3];

for (int i = 0; i < matrix.length; i++) {
  for (int j = 0; j < matrix[i].length; j++) {
    matrix[i][j] = i * matrix[i].length + j;
  }
}

此方法适用于每一行(i)将行号乘以行长(列数),然后将当前列添加到其中

答案 1 :(得分:0)

要遍历二维字段(例如矩阵),可以使用两个for循环:

int dimension = 3;
int [][] matrix = new int [dimension][dimension];

for (int i = 0; i < dimension; i++){
   for ( int j = 0; j < dimension; j++){
      matrix[i][j] = fields.get(i).get(j);
   }
}

我不完全知道您要如何检索这些值,但是至少可以说您当前的通话看起来很可疑:-) 它将简单地为列j中的所有int分配相同的值。

答案 2 :(得分:0)

如果您模拟自己的循环,它就是它的样子

i -> 0
    j -> 0
        matrix[0][0] -> loop over all values from field

这样,您将fields.get(8)放入矩阵的每个索引中。

@Alan的答案显示了如何从1d矩阵正确地循环并填充2d矩阵