Найти тему
Даниил Лаер

Курс по Java-разработке бесплатно(8 урок)

Оглавление

Двумерные массивы

На прошлом занятии мы рассмотрели одномерные массивы. Представление одномерного массива - строка, содержащая в себе данные, перечисленные через запятую. На практике этого недостаточно. Необходимо иметь и другие, более сложные представления. Например обычная таблица данных, состоящая из нескольких столбцов и строк должна иметь уже более сложное представления. Изображение же - это вообще таблица троек чисел (Один цвет задаётся 3 компонентами RGB). Тут нам на помощь приходят многомерные массивы. Многомерный массив - это массив, каждым элементом которого является массив.

Создаётся двумерный массив очень просто:

int n = 5;

int m = 6;

int[][] mas = new int[n][m];

Такой массив представляет из себя массив, в котором лежит 5 массивов, каждый из которых содержит 6 элементов типа int. Представление такого массива - таблица 5 х 6.

Заполнение массива

Для перебора двумерного массива необходимо запускать 2 цикла.

for (int i = 0; i<n; i++){

for (int j = 0; j<m; j++){

// здесь будет код

}}

Для избежания ошибок очень важно следить за верностью введения индексов: если задан массив размерами n х m, то первый индекс должен быть меньше, чем n, а второй меньше, чем m.

Заполняется массив в подобных циклах. Например код, который будет заполнять массив числами от 0 до n*m-1:

for (int i = 0; i<n; i++){

for (int j = 0; j<m; j++){

mas[i][j] = i*m + j;

}}

Обратите внимание, что теперь у массива 2 индекса - первый определяет индекс массива, который мы берём, а второй - индекс элемента в массиве.

Если нам необходимо заполнить двумерный массив введёнными числами, то можно воспользоваться следующим кодом:

for (int i = 0; i<n; i++){

for (int j = 0; j<m; j++){

mas[i][j] = sc.nextInt();

}}

Вывод двумерного массива на экран

Вывести на экран двумерный массив можно с помощью всё тех же двух циклов:

for (int i = 0; i<n; i++){

for (int j = 0; j<m; j++){

System.out.print(mas[i][j]+" ");

}

System.out.println();

}

С помощь команды System.out.print() мы выводим элементы массива, не переходя на следующую строку. В тоже время, каждый раз, когда внутренний цикл отрабатывает, мы делаем переход на следующую строку с помощью команды System.out.println().

Такими образом, создание, заполнение и вывод двумерного массива должны выглядеть примерно так:

class A {

public static void main(String[] args) {

// пример создания

int n = 5;

int m = 6;

int[][] mas = new int[n][m];

// пример заполнения

for (int i = 0; i<n; i++)

for (int j = 0; j<m; j++)

mas[i][j] = i*m + j;

//пример вывода

for (int i = 0; i<n; i++){

for (int j = 0; j<m; j++)

System.out.print(mas[i][j]+" ");

System.out.println();

}}}

"Зубчатые" массивы

К слову, многомерные массивы необязательно должны быть строго n x m. Все, кроме первой размерности могут быть произвольными.

import java.util.Scanner;

class A {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int n = 5;

int m = 6;

// пример заполнения

int[][] mas = new int[n][];

int[] mas0 = {1,3,4,5,3,6,7,246,35,62,56};

mas[0] = mas0;

mas[1] = new int[]{34, 4567, 344, 734, 6};

mas[2] = new int[]{1};

mas[3] = new int[]{34, 5, 42, 356, 4567, 344, 734, 6};

mas[4] = new int[]{34, 5};

//пример вывода

for (int i = 0; i<n; i++){

for (int j = 0; j<mas[i].length; j++) //length

System.out.print(mas[i][j]+" ");

System.out.println();

}}}

Обратите внимание на очень интересную функцию: length. Если у вас есть массив, длину которого необходимо узнать, то достаточно (для массива под названием mas) написать mas.length. Такая строчка вернёт вам длину массива.

Многомерные массивы

Помимо одномерных и двумерных массивов можно создавать массивы любой размерности, которая вам понадобится. Например, код для создания трёхмерного массива, хранящего, скажем, изображения будет выглядеть примерно так:

class A {

public static void main(String[] args) {

// пример создания

int n = 1080;

int m = 1920;

int p = 3;

int[][][] mas = new int[n][m][p];

// пример заполнения

for (int i = 0; i<n; i++)

for (int j = 0; j<m; j++)

for (int k = 0; k < p; k++)

mas[i][j][k] = 0;

//пример вывода

for (int i = 0; i < n; i++){

for (int j = 0; j < m; j++){

System.out.print("(");

for (int k = 0; k < p; k++)

System.out.print(mas[i][j][k] + " ");

System.out.println(")");

}

System.out.println();

}}}

Свои вопросы можете задать в телеграмм-канале

https://tlgg.ru/@javaFreeWell

Курс по Java - разработке бесплатно(7 урок)

Курс по Java - разработке бесплатно(9 урок)