Многомерные массивы в Java — это массивы, элементы которых сами являются массивами. Чаще всего это «таблицы» (2D), но возможны и 3D. Важно помнить: в Java это не матрица как единый блок, а массив массивов, поэтому строки могут иметь разную длину (рваные массивы). Доступ идёт по индексам: a[i][j]. Тема нужна для задач java онлайн: обработка таблиц, сеток, оценок, пикселей. В тренажере — примеры, тесты и задания на чтение/заполнение/обход, чтобы понять как работает код.
Пример:
int[][] m = {{1,2,3},{4,5,6}};
int x = m[1][2];
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Объявление и обращение к 2D-массиву
Перед вами короткий фрагмент Java-кода с пропусками. Нужно собрать корректный пример работы с двумерным массивом: выбрать правильный тип для 2D-массива, правильно создать его через new с двумя размерами и обратиться к элементу по двум индексам. Заполните каждый пропуск, выбирая подходящий вариант из выпадающего списка; некоторые варианты специально похожи, но приводят к неверному коду.
public class md_01_select_fill_declare {
public static void main(String[] args) {
input1S matrix = input2S;
matrix[1][2] = 7;
int value = matrix[input3S][input4S];
System.out.println(value);
}
}
2. Индексы в a[i][j]
В этом задании нужно восстановить корректное обращение к элементу двумерного массива в форме a[i][j]. В коде уже задана «таблица» (2D-массив) с известными значениями. Заполните пропуски так, чтобы программа скомпилировалась и вывела на экран число, которое находится во 2-й строке и 3-м столбце таблицы (строки и столбцы считаются как обычно в задачах, начиная с 1).
public class md_02_replace_access {
public static void main(String[] args) {
int[][] table = {
{10, 20, 30},
{40, 50, 60}
};
System.out.println(input1S[input2S][input3S]);
}
}
3. Исправь ошибку в рваном массиве
В фрагменте Java-кода создаётся рваный (jagged) двумерный массив: строки имеют разную длину. Затем программа проходит по нему вложенными циклами и выводит все элементы. Сейчас в одной из строк допущена ошибка в условии внутреннего цикла, из-за которой при обходе некоторых строк возникнет исключение. Исправьте только проблемную строку так, чтобы алгоритм обхода остался тем же и код корректно распечатал все значения.
public class md_03_error_jagged { public static void main(String[] args) { int[][] jagged = { {1, 2}, {3, 4, 5}, {6} }; for (int i = 0; i < jagged.length; i++) { for (int j = 0; j < jagged.length; j++) { System.out.print(jagged[i][j] + " "); } System.out.println(); } }}4. Что выведет length для 2D-массива
Проанализируйте фрагмент кода на Java с двумерным (зубчатым) массивом int[][] и тремя вызовами System.out.println, которые выводят длину массива a и длины отдельных строк. Учтите, что строки массива могут иметь разную длину, в том числе нулевую. Выберите один вариант ответа, который в точности соответствует выводу программы в консоль.
class Main {
public static void main(String[] args) {
int[][] a = {
{1, 2, 3},
{4},
{},
{5, 6}
};
System.out.println(a.length);
System.out.println(a[1].length);
System.out.println(a[2].length);
}
}5. Собери вложенные циклы обхода
Из предложенных фрагментов соберите корректный фрагмент Java-кода с вложенными циклами, который объявляет двумерный массив int[][] matrix, затем с помощью внешнего цикла по строкам и внутреннего цикла по столбцам обходит все элементы массива, выводя элементы одной строки в одну строку через пробел и после каждой строки переносит курсор на новую строку. Одна строка с некорректным индексированием лишняя и не должна попадать в решение.
int[][] matrix = { {1, 2, 3}, {4, 5, 6} };for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println();} System.out.print(matrix[j][i] + " ");6. Отметь все обращения к элементам 2D-массива
Перед вами фрагмент кода на Java с объявлением и использованием двумерного массива matrix. Внимательно изучите циклы и выражения внутри них. Ваша задача — выделить все обращения к отдельным элементам двумерного массива, то есть такие фрагменты, где используются две пары квадратных скобок подряд. Не выделяйте выражения, которые обращаются только к длине измерений массива, а также имя массива без индексов и другие части кода.
int[][] matrix = new int[3][4];
for (int i = 0; i < {{matrix.length~|~t1}}; i++) {
for (int j = 0; j < {{matrix[i].length~|~t2}}; j++) {
{{matrix[i][j]~|~t3}} = i + j;
}
}
int sum = 0;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
sum += {{matrix[i][j]~|~t4}};
}
}
System.out.println({{matrix~|~t5}});
7. Сумма элементов одной строки
Рассмотрите фрагмент Java-кода с двумерным массивом int[][], в котором с помощью цикла вычисляется сумма элементов одной строки и результат выводится на экран. Не изменяйте код мысленно, просто аккуратно проследите выполнение программы: какая строка берётся, какие значения в ней содержатся и как они накапливаются в переменной sum. Введите в поле одно целое число — то, которое будет напечатано методом System.out.println().
public class Main {
public static void main(String[] args) {
int[][] matrix = {
{3, 5, 7},
{1, 4, 9},
{2, 6, 8}
};
int rowIndex = 1;
int sum = 0;
for (int i = 0; i < matrix[rowIndex].length; i++) {
sum += matrix[rowIndex][i];
}
System.out.println(sum);
}
}