Многомерный массив, заполните матрицу числами в Java - PullRequest
0 голосов
/ 27 мая 2020

Так что я в полном тупике. Мне нужно создать многомерный массив nxn и заполнить его определенным образом. Мне удалось создать 2d-массив на nxn, но я не знаю, как его заполнить. Ниже я включил задачу, сформулированную в точности так, как было дано мне.

Дано число n, не больше 100. Создайте матрицу размера n × n и заполните ее по следующему правилу . Цифры 0 должны храниться на главной диагонали. Две соседние с основной диагональю должны содержать числа 1. Следующие две диагонали - числа 2, et c.

Пример ввода 1:

5

Пример вывода 1:

0 1 2 3 4
1 0 1 2 3
2 1 0 1 2
3 2 1 0 1
4 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]));
        }
    }
}

1 Ответ

0 голосов
/ 27 мая 2020

Вот как я подхожу к вашей проблеме:

Я бы использовал вложенные циклы 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]));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...