Создание и доступ к массивам 2D
| English | Русский |
|---|---|
| 2-D array/tuː diː əˈreɪ/ | 2-D массив |
Таблица значений
- 2-D массив хранит значения в виде таблицы строк и столбцов.
- Объявляется с двумя скобками:
int[][] grid = new int[3][4];(3 строки, 4 столбца). - Или с использованием инициализатора:
int[][] g = {{1, 2}, {3, 4}, {5, 6}};(3 строки по 2 элемента). - Представьте электронную таблицу, игровую доску или пиксельное изображение.
Строка, затем столбец
- Доступ к элементу осуществляется с помощью двух индексов:
grid[row][col]. grid[0][0]— это верхний левый угол;grid[1][2]— это строка1, столбец2.- Строка идет первой, затем столбец — это частая ошибка, которую легко допустить.
- Оба индекса начинаются с
0, как и любой массив в Java.
Подсчет строк и столбцов
grid.length— это количество строк.grid[0].length— это количество столбцов (длина одной строки).- Для прямоугольной таблицы у каждой строки одинаковое количество столбцов.
- Используйте эти две длины для ограничения циклов обхода таблицы.
Два параметра для контроля
- Действительный элемент имеет индексы
grid[r][c]со значениями0 <= r < grid.lengthи0 <= c < grid[0].length. - Выход за пределы диапазона по любому индексу вызывает ArrayIndexOutOfBoundsException.
- Перепутанные строка и столбец приведут к чтению неверной ячейки (или крашу программы).
- Каждый раз проверяйте порядок
[row][col].
Это grid[row][col] — сначала строка, потом столбец — и длины различаются. grid.length считает строки; grid[0].length считает столбцы. Перестановка индексов приведет к чтению неверной ячейки или выбросу исключения. При обходе внешний индекс доходит до grid.length, а внутренний — до grid[0].length.
Таблица 3×2 g = {{1, 2}, {3, 4}, {5, 6}}:
g[0][0]равно1;g[2][1]равно6(строка 2, столбец 1).g.lengthравно3(строки);g[0].lengthравно2(столбцы).g[1][0]это3— строка1, столбец0.
2-D массив — это таблица, создаваемая с помощью new type[rows][cols] или вложенного инициализатора. Доступ к элементу осуществляется как grid[row][col] (сначала строка). grid.length — количество строк; grid[0].length — количество столбцов. Оба индекса начинаются с 0, а выход за пределы вызывает исключение.
индексация grid[row][col]
g[2][1] = 6; g.length = 3 строки, g[0].length = 2 столбца.
Для int[][] g = {{1,2},{3,4},{5,6}}; чему равно g[2][1]?
Строка 2 равна {5,6}; столбец 1 равен 6.
В записи grid[row][col], какой индекс стоит первым?
Сначала строка, затем столбец.
Для сетки размером 3 строки на 4 столбца, чему равно grid.length?
grid.length — это количество строк = 3.
Для сетки размером 3 строки на 4 столбца, чему равно grid[0].length?
grid[0].length — это количество столбцов = 4.
grid.length дает количество столбцов.
grid.length — это строки; grid[0].length — это столбцы.