我正在创建一个程序来创建一个身份矩阵 - 这非常简单。但现在我需要创建身份矩阵,但后退。结果必须如此:
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循环有关,但我无法确定它。
谢谢!
答案 0 :(得分:1)
更改
matrix[i][j] = (i == j) ? 1 : 0;
到
matrix[i][j] = (i == size - j - 1) ? 1 : 0;
答案 1 :(得分:1)
您需要更改控制值是1还是0的条件:
matrix[i][j] = (i + j == size - 1) ? 1 : 0;
因此,如果大小为3
,则位置[0] [2],[1] [1]和[2] [0]会得到1。
答案 2 :(得分:0)
为什么不为你的身份案件做这件事:
for(int i = 0; i < size; i++) {
matrix[i][i] = 1;
}
然后对于其他情况使用:
for(int i = 0; i < size; i++) {
matrix[i][size - (i+1)] = 1;
}
答案 3 :(得分:0)
以下是如何使用la4j(线性代数for Java)创建它的简短示例:
Matrix a = new Basic2DMatrix(Matrices.asIdentitySource(3)).transpose();
// will create a 3x3 matrix
//
// 0 0 1
// 0 1 0
// 1 0 0