我需要制作一个 10 x 10 的二维数组,如下所示:
0 45 44 42 39 35 30 24 17 9
0 0 43 41 38 34 29 23 16 8
0 0 0 40 37 33 28 22 15 7
0 0 0 0 36 32 27 21 14 6
0 0 0 0 0 31 26 20 13 5
0 0 0 0 0 0 25 19 12 4
0 0 0 0 0 0 0 18 11 3
0 0 0 0 0 0 0 0 10 2
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
这就是我的代码的样子:
public class Main {
public static void main(String[] args) {
int[][] a = new int [10][10];
int i = 45;
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 10; col++) {
if (row>col-1) {
System.out.print("0" + " ");
} else {
a[row][col]=i--;
System.out.print(a[row][col]+" ");
}
}
System.out.println();
}
}
}
这是它在控制台中打印的结果:
0 45 44 43 42 41 40 39 38 37
0 0 36 35 34 33 32 31 30 29
0 0 0 28 27 26 25 24 23 22
0 0 0 0 21 20 19 18 17 16
0 0 0 0 0 15 14 13 12 11
0 0 0 0 0 0 10 9 8 7
0 0 0 0 0 0 0 6 5 4
0 0 0 0 0 0 0 0 3 2
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
我尝试更改内部和外部 for 循环的顺序,但它对我不起作用。
不要正常迭代,而是从右下角向上并向左反向进行。
int [][] m = new int[10][10];
int value = 1;
for (int col = 9; col >= 0; col-- ) {
for (int row = col-1; row >= 0; row--) {
m[row][col] = value++;
}
}
for (int[] row : m) {
for (int i : row) {
System.out.printf("%3d", i);
}
System.out.println();
}
打印
0 45 44 42 39 35 30 24 17 9
0 0 43 41 38 34 29 23 16 8
0 0 0 40 37 33 28 22 15 7
0 0 0 0 36 32 27 21 14 6
0 0 0 0 0 31 26 20 13 5
0 0 0 0 0 0 25 19 12 4
0 0 0 0 0 0 0 18 11 3
0 0 0 0 0 0 0 0 10 2
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0