1. Нерівні масиви

У Java ви, як програміст, можете не лише поміняти рядки двовимірного масиву місцями, але й сконструювати цей масив самостійно як заманеться.

Припустімо ви хочете, щоб перший рядок двовимірного масиву мав довжину 10, а другий — 50. Чи можна так зробити? Так, можна.

Спершу потрібно створити «контейнер контейнерів» — перший масив, який зберігатиме посилання на масиви-рядки. Це роблять так:

int[][] ім'я = new int[висота][];

Ви просто не вказуєте другий параметр, і Java-машина створює тільки «контейнер контейнерів». От що буде в пам'яті після виконання цього коду:

Ну а як створювати одновимірні масиви, ви вже знаєте 🙂

Остаточний вигляд коду буде таким:

// Важлива матриця з даними
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50];
Двовимірний масив

Нульовий рядок — масив із 10 елементів
Перший рядок — масив із 50 елементів.

Щойно ви створили так званий «нерівний масив».

І от якщо ми захочемо вивести всі елементи цього масиву на екран, нам стане у великій пригоді властивість length, адже рядки масиву мають різну довжину.

До речі, як визначити довжину «контейнера контейнерів» у нашому прикладі? Адже це теж об'єкт-масив, а значить, він має довжину. Правильна відповідь — matrix.length.

А як щодо довжини масивів-рядків? matrix[0].length


8
Задача
Модуль 1. Java Syntax,  12 рівень0 лекція
Недоступна
Усі можливі типи
Як тобі вже відомо, загалом у мові Java є 8 примітивних типів. Створи по одній змінній кожного примітивного типу в класі Solution. Змінні не повинні міститися всередині якихось методів.

2. Робота з двовимірними масивами

Припустімо, ви хочете вивести на екран двовимірний масив. Як же це зробити?

Наш код матиме приблизно такий вигляд:

int[][] matrix = new int[3][];
matrix[0] = new int[]{1, 2, 3, 4, 5, 6};
matrix[1] = new int[]{1, 2, 3};
matrix[2] = new int[]{1};
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();
}
Створення масиву
Заповнення масиву значеннями


Зовнішній цикл по рядках масиву — перебирає рядки масиву.
Внутрішній цикл по комірках — перебирає комірки одного рядка.

Вам знадобиться два вкладених цикли. Перший ми назвемо зовнішнім, а другий — внутрішнім.

У зовнішньому циклі (змінна i) ми по черзі проходимо по всіх масивах-рядках, з яких складається наш двовимірний масив. Кожне значення змінної i відповідає рядку масиву з таким номером.

У внутрішньому циклі (змінна j) ми перебираємо всі комірки масивів-рядків. У результаті роботи внутрішнього циклу на екран буде виведено рядок, який складається зі значень одного рядка масиву.

От що буде виведено на екран:

Оброблено один рядок масиву
1 2 3 4 5 6 
Оброблено два рядки масиву
1 2 3 4 5 6
1 2 3 
Оброблено три рядки масиву
1 2 3 4 5 6
1 2 3
1 

8
Задача
Модуль 1. Java Syntax,  12 рівень0 лекція
Недоступна
Максимальне ціле
Створи по одній змінній кожного примітивного цілочислового типу в класі Solution. Присвой цим змінним максимально можливе для них значення. Жодного методу створювати не потрібно.

3. Багатовимірні масиви

Ще один цікавий факт про масиви. Напевно, ви вже здогадуєтеся, про що йдеться. Якщо можна зробити двовимірний масив, значить, можна зробити й тривимірний?

Так, можна створити масив будь-якої розмірності. Такі масиви називають багатовимірними.

З цікавості спробуймо створити багатовимірний масив розмірності 4.

int[][][][] matrix = new int[2][3][4][5];

Занадто простий код, чи не так?

А якщо створити його вручну?

int[][][][] matrix;
matrix = new int[2][][][];                // створюємо масив «посилань на посилання на посилання» довжиною 2
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];             // створюємо масив «посилань на посилання» довжиною 3
  for (int j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];          // створюємо масив посилань довжиною 4
    for (int k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];       // створюємо масиви цілих чисел довжиною 5
  }
}

І це лише створення масиву! А з ним ще й працювати якось треба.

Бонусне завдання — написати код, який виводить на екран усі значення тривимірного масиву.


8
Задача
Модуль 1. Java Syntax,  12 рівень0 лекція
Недоступна
Мінімальне ціле
Створи по одній змінній кожного примітивного цілочислового типу в класі Solution. Присвой цим змінним мінімально можливе для них значення. Жодного методу створювати не потрібно.