我想创建一个大小为 N × N 的矩阵,其中 N 是全局定义的常数值,现在我只想创建一个 N=6 的矩阵。我的不足之处是我想对角线制作它,如下所示:
0 1 2 3 4 5
1 0 1 2 3 4
2 1 0 1 2 3
3 2 1 0 1 2
4 3 2 1 0 1
5 4 3 2 1 0
目前我有这个方法:
public static void drawMatrix(){
for (int line = 0; line < N; line++){
for (int j = 0; j < N; j++){
System.out.print(j + " ");
}
System.out.println();
}
}
不幸的是,它只能在每一行中打印 0 1 2 3 4 5,所以我想我需要另一个嵌套的 for 循环,但我不确定如何设置它。
最佳答案
j
是列号,因此所有行都相同。您需要做的是根据行号从行号中添加或减去 j
,以便进行“移位”。由于结果可能变为负数,因此您需要添加 N
和 mod by N
:
if (j > line) {
System.out.print((N-line+j)%N + " ");
} else {
System.out.print((line-j+N)%N + " ");
}
您也可以使用条件表达式在没有 if
的情况下重写它:
int sign = j > line ? -1 : 1;
System.out.print((N+sign*(line-j))%N + " ");
关于java - 使用基本逻辑创建 N×N 对角矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39368183/