所以我完全陷入了困境。我需要创建一个多维数组n x n并以特定方式填充它。我已经能够创建每n x n 2d数组,但不知道如何填充它。在下面,我包括了完全给我的措词。
给出数字n,不大于100。创建大小为n×n的矩阵,并按照以下规则填充。数字0应该存储在主对角线上。与主要对角线相邻的两个对角线应包含数字1。接下来的两个对角线-数字2等。
样本输入1:
5
样本输出1:
0 1 2 3 41 0 1 2 32 1 0 1 23 2 1 0 14 3 2 1 0
到目前为止是我的代码。任何方向都是伟大的!
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] array = new int[n][n];
for (int i = 0; i < array.length; i++) {
System.out.println(Arrays.toString(array[i]));
}
}
}
这是我如何解决您的问题:
我将使用嵌套的for循环,一个用于遍历行,另一个用于遍历列。在我的示例中,i
遍历行,而j
遍历列。现在,我知道只击中矩阵的每个单元一次,只需要找出一种方法即可根据i
和j
计算单元的值。在这种情况下,单元格的值是列号减去行号或i - j
,除非没有负数,可以使用绝对值(Math.abs(int)
)轻松解决。以下是我的处理方法:
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.close(); // remember to close all your resources!
int[][] array = new int[n][n];
for (int i = 0; i < n; i++) { //iterate over rows
for (int j = 0; j < n; j++) { //iterate over columns
array[i][j] = Math.abs(j - i); //calculate cell's value
}
}
for (int i = 0; i < n; i++) {
System.out.println(Arrays.toString(array[i]));
}
}
}