我一直在尝试让一个 10x10 2D 数组对角填充,如下图所示,几个小时了,但是在检查了使用行和列的所有可能方法之后,我似乎仍然无法识别我对代码的误解。
我应该得到什么:
这就是我已经走了多远,我不明白我做错了什么
int n = 1;
for (int i=0; i<=9; i++) {
for (int j=9-i ; j>=7-i; j--) {
if (j>=0)
m[i][j] = n++;
}
}
您首先需要循环行,并且知道这是一个对角循环,每一步的起点将是 (i, i) 元组。从那里开始,内部循环最多循环 2 个元素,并更新给定位置的值(如果它们位于边界内)。每当我们为给定元素设置一个值时,我们都会递减
currentIndex
,因此我们不必担心它的值。
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) {
int currentIndex = 27;
int[][] array = new int[10][10];
for (int i = 0; i < array.length; i++) {
for (int j = i; j <= i + 2 && (j < array[i].length); j++) {
array[i][j] = currentIndex--;
}
}
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
System.out.print((array[i][j] > 9 ? "" : " ") + array[i][j] + " ");
}
System.out.println();
}
}
}