有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java反向方法?

我正在创建一个程序来创建一个身份矩阵-这非常简单。但是现在我需要创建身份矩阵,但是向后。结果应该是这样的:

0 0 1

0 1 0

1 0 0

下面是我正在使用的创建身份矩阵的程序:

import java.util.*;
class Lab19Part2 {
    public static int[][] create(int size) {
        int[][] matrix = new int[size][size];

            for(int i = 0; i < size; i++)
            for(int j = 0; j < size; j++)
                matrix[i][j] = (i == j) ? 1 : 0;
            return matrix;
    } public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("Enter size of matrix: ");
            int size=input.nextInt();
            int matrix[][]=create(size);

            for (int i=0 ; i < matrix.length ; i++) { 
            System.out.println();

                for (int j=0 ; j < matrix[i].length ; j++){
                System.out.print(matrix[i][j]+" ");
                }
            }
    }
}

虽然它打印出了身份矩阵,如下所示:

1 0 0

0 1 0

0 0 1

问题是,我如何使它像第一个单位矩阵一样打印出来?我知道这和for循环有关,但我不能精确地指出

谢谢


共 (4) 个答案

  1. # 1 楼答案

    下面是如何使用la4j(Java线性代数)创建它的简要示例:

    Matrix a = new Basic2DMatrix(Matrices.asIdentitySource(3)).transpose();
    
    // will create a 3x3 matrix
    //
    // 0 0 1
    // 0 1 0
    // 1 0 0
    
  2. # 2 楼答案

    改变

    matrix[i][j] = (i == j) ? 1 : 0;
    

    matrix[i][j] = (i == size - j - 1) ? 1 : 0;
    
  3. # 3 楼答案

    为什么不针对您的身份案例执行此操作:

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

    对于另一种情况,请使用:

    for(int i = 0; i < size; i++) {
        matrix[i][size - (i+1)] = 1;
    }
    
  4. # 4 楼答案

    您需要更改控制值是1还是0的条件:

    matrix[i][j] = (i + j == size - 1) ? 1 : 0;
    

    因此,如果大小为3,则位置[0][2]、[1][1]和[2][0]得到1