多维数组,用Java中的数字填充矩阵

问题描述 投票:0回答:1

所以我完全陷入了困境。我需要创建一个多维数组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]));
        }
    }
}
java multidimensional-array
1个回答
0
投票

这是我如何解决您的问题:

我将使用嵌套的for循环,一个用于遍历行,另一个用于遍历列。在我的示例中,i遍历行,而j遍历列。现在,我知道只击中矩阵的每个单元一次,只需要找出一种方法即可根据ij计算单元的值。在这种情况下,单元格的值是列号减去行号或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]));
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.