3D-массивы и выше
Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 7 из 59.
Так же, как вы можете создавать двумерные массивы (массивы массивов), вы можете создавать трёхмерные массивы (массивы массивов массивов), четырёхмерные массивы и так далее. Такие массивы называются многомерными.
Трёхмерный массив можно визуализировать как коллекцию двумерных массивов, сложенных друг на друга, формирующих кубическую структуру. Каждый элемент в трёхмерном массиве доступен с использованием трёх индексов: одного для глубины (какой двумерный массив), одного для строки и одного для столбца.
Вот как объявить и инициализировать трехмерный массив в Java:
data_type[][][] array_name = new data_type[depth][rows][columns];data_type: Тип элементов, которые будет содержать массив.array_name: Имя массива.
depth: Количество двумерных массивов (глубина).rows: Количество строк в каждом двумерном массиве.columns: Количество столбцов в каждом двумерном массиве.
Например, чтобы создать трехмерный массив целых чисел с размерами 2x3x4, вы напишете:
int[][][] cube = new int[2][3][4];Вы также можете инициализировать трехмерный массив напрямую:
int[][][] cube = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};Задание
ЛегкоНапишите программу, которая принимает три целочисленных аргумента: depth, rows и cols. Она должна создать трехмерный массив целых чисел с указанными размерами и инициализировать каждый элемент массива произведением его индексов по глубине, строке и столбцу (начиная с 1).
Например, элемент в [d][r][c] должен иметь значение (d + 1) * (r + 1) * (c + 1).
Наконец, выведите результирующий трехмерный массив в консоль с использованием вложенных циклов. Вывод должен выглядеть так:
Depth 0:
1 2 3 4
2 4 6 8
3 6 9 12
Depth 1:
2 4 6 8
4 8 12 16
6 12 18 24Шпаргалка
Трёхмерные массивы — это массивы массивов массивов, визуализируемые как кубические структуры с глубиной, строками и столбцами.
Объявление и инициализация:
data_type[][][] array_name = new data_type[depth][rows][columns];Пример:
int[][][] cube = new int[2][3][4];Прямая инициализация:
int[][][] cube = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};Элементы доступны с использованием трёх индексов: array[depth][row][column]
Попробуйте сами
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int depth = scanner.nextInt();
int rows = scanner.nextInt();
int cols = scanner.nextInt();
int[][][] array3D = new int[depth][rows][cols];
// Напишите свой код ниже
// Вывод 3D-массива
for (int d = 0; d < depth; d++) {
System.out.println("Depth " + d + ":");
for (int r = 0; r < rows; r++) {
for (int c = 0; c < cols; c++) {
System.out.print(array3D[d][r][c] + " ");
}
System.out.println();
}
}
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов