java - 使用基本逻辑创建 N×N 对角矩阵

标签 java for-loop matrix

我想创建一个大小为 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,以便进行“移位”。由于结果可能变为负数,因此您需要添加 Nmod by N:

if (j > line) {
    System.out.print((N-line+j)%N + " ");
} else {
    System.out.print((line-j+N)%N + " ");
}

Demo.

您也可以使用条件表达式在没有 if 的情况下重写它:

int sign = j > line ? -1 : 1;
System.out.print((N+sign*(line-j))%N + " ");

Demo.

关于java - 使用基本逻辑创建 N×N 对角矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39368183/

相关文章:

"split(regEx)"和 "split(regEx, 0)"之间的 Java 区别?

javascript - 如何使用循环在javascript中将数字增加0.01?

matlab - 如何在 MATLAB 中对矩阵的每一项应用条件并获得相同大小的输入矩阵并计算 1 的数量?

java - 在我的类路径中找不到 MavenDependencyResolver。

java - 对私有(private)列表问题的迭代

java - 初始 SessionFactory 创建失败。javax.persistence.PersistenceException

javascript - 如何在 for 循环中用条件语句替换数字?

java - Java 中的 For 循环

r - R中的 "diagonal"矩阵平方

java - 如何在 Java 中找到 .svs 图像文件的 RGB 数据?