Java中的特殊对角矩阵

Bal*_* D. 2 java arrays matrix

有谁知道如何在Java中构造以下矩阵?

矩阵

我可以看到一个转置模式,但我可能会在错误的轨道上.这就是我到目前为止......不要笑:-)

import java.io.*;

public class Diagonal
{
   public static void main(String[] args)throws IOException
   {
      InputStreamReader isr = new  InputStreamReader(System.in);
      BufferedReader in = new BufferedReader(isr);

      int dim;

      do
      {
      System.out.print("Dimension: ");
      dim = Integer.parseInt(in.readLine());
      }while(dim<=0);

      int[][] matrix = new int[dim][dim];

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

      //Transpose
      int transpose[][] = matrix;

      for(int i=0;i<dim;i++)
      {    
         for(int j=0;j<dim;j++)
         {
            transpose[j][i] = matrix[i][j];
         }
      }

      //print transpose
      for(int i=0;i<transpose.length;i++)
      {
         for(int j=0;j<transpose[i].length;j++)
         {
            System.out.print(transpose[i][j]);
         }
         System.out.println("");   
      }      
   }
}
Run Code Online (Sandbox Code Playgroud)

我不确定,但我认为它被称为toeplitz矩阵......

GRTS.

ass*_*ias 5

请注意:m[i][j] = Math.abs(i - j) + 1.一旦你看到了,创建矩阵非常简单:

private static int[][] createMatrix(int n) {
  int[][] m = new int[n][n];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      m[i][j] = Math.abs(i - j) + 1;
    }
  }
  return m;
}
Run Code Online (Sandbox Code Playgroud)

你可以尝试一下:

public static void main(String[] args) {
  for (int[] row : createMatrix(8)) {
    System.out.println(Arrays.toString(row));
  }
}
Run Code Online (Sandbox Code Playgroud)

打印:

[1, 2, 3, 4, 5, 6, 7, 8]
[2, 1, 2, 3, 4, 5, 6, 7]
[3, 2, 1, 2, 3, 4, 5, 6]
[4, 3, 2, 1, 2, 3, 4, 5]
[5, 4, 3, 2, 1, 2, 3, 4]
[6, 5, 4, 3, 2, 1, 2, 3]
[7, 6, 5, 4, 3, 2, 1, 2]
[8, 7, 6, 5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)