加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用基本逻辑创建N乘N对角矩阵

发布时间:2020-12-14 16:43:58 所属栏目:Java 来源:网络整理
导读:我想创建一个N大小的矩阵,其中N是全局定义的常量值,现在我只想创建一个N = 6的矩阵.我在哪里,我想让它对角线,就像这样: 0 1 2 3 4 51 0 1 2 3 42 1 0 1 2 33 2 1 0 1 24 3 2 1 0 15 4 3 2 1 0 目前我有这个方法: public static void drawMatrix(){ for (in
我想创建一个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是列号,因此对于所有行都是相同的.您需要做的是根据行号添加或减去行号,以便进行“移动”.由于结果可能变为负值,您需要将N和mod添加为N:
if (j > line) {
    System.out.print((N-line+j)%N + " ");
} else {
    System.out.print((line-j+N)%N + " ");
}

Demo.

如果使用条件表达式,也可以重写它:

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

Demo.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读