对角填充2D阵列

时间:2015-03-30 14:47:50

标签: java multidimensional-array

我需要对角填写这个2D数组,我不确定它应该是这样的。

Output

这就是我所拥有的

for(int i=0; i < matrix.length; i++ )  
    matrix[i][i] = i;

4 个答案:

答案 0 :(得分:2)

如果您希望矩阵以图片的方式填充,请使用索引(demo)进行一些操作:

int last = matrix.length-1;
for(int i=0; i < matrix.length; i++ )  
      matrix[i][last-i] = last-i;

通过从最后一行开始打印矩阵的行,可以实现相同的输出。

答案 1 :(得分:0)

只有当它是方形二维数组时才会起作用, 并且仅填充一个对角线(左上角到右下角)。

答案 2 :(得分:0)

这有点乱,但你需要的是:

public static void main(String[] args) throws IOException {
  int n = 5; // dimension of the array
  int[][] matrix = new int[n][n];
  int count = matrix[0].length - 1;
  int xcurr = 0;
  int ycurr = count;

  for(int x=0; x < matrix[0].length; x++) {
      for (int y=0; y < matrix[0].length; y++) {
          if (x == xcurr && y == ycurr) {
              matrix[x][y] = count;
              ycurr --;
              xcurr ++;
              count --;
          } else {
              matrix[x][y] = 0;
          }
      }
  }

  for(int i=0; i < matrix.length; i++) {
      System.err.println(Arrays.toString(matrix[i]));
  }
}

DEMO HERE

答案 3 :(得分:0)

可以通过多种方式完成,这里有一个:

// Initializing the array
    int[] array =
            {
                    0, 0, 0, 0, 4,
                    0, 0, 0, 3, 0,
                    0, 0, 2, 0, 0,
                    0, 1, 0, 0, 0,
                    0, 0, 0, 0, 0
            };

    // Iteration of the loop for printing
    for (int i = 0; i < array.length; i++) {
        if (i % 5 != 0) // while is not divisible with 5
        {
            System.out.print(array[i]);
            System.out.print(" "); // Spaces between numbers
        } else // Makes new line for every fifth iteration
        {
            System.out.println();
        }
    }

我希望从评论中有意义。