我想创建一个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.