Освоюємо Java/Масиви

Матеріал з Вікіпідручника
Перейти до: навігація, пошук

Масив - це впорядкований набір однотипних елементів, на які посилаються по спільному імені. Це доволі зручний засіб групування інформації. Масиви можна створювати з елементів будь-якого типу. До конкретного елементу в масиві звертаються по індексу (номеру). Вони можуть бути як одновимірні так і багатовимірні.

Одновимірні масиви [ред.]

Одновимірні масиви - це список однотипних елементів. Загальний формат оголошення такого масиву:

тип-елементів назва-масиву[];

Наприклад:

int month_days[]; // масив цілих чисел

Існує також інша форма оголошення масиву:

int[] month_days;

Проте для того, щоб масив почав існувати необхідно виділити під нього пам'ять, за допомогою операції new.

назва-масиву = new тип-елементів [розмір];

де розмір - планована кількість елементів у масиві.

month_days=new int[12];

або зразу ж:

int month_days[] =new int[12];

Таким чином відбувається виділення пам'яті під масив і ініціалізації елементів масиву нулями. В подальшому можна напряму звертатися до елементів масиву вказуючи індекс у квадратних дужках. Нумерація елементів в масиві в java відбувається з нуля. Тобто в наведеному прикладі звернення до першого(нульового) елемента - month_days[0], а до останнього - month_days[11]. Java не дозволить програмі звернутися поза межі масиву, щоправда помилка буде вказана лише на етапі виконання програми через викидання винятку(виключення).

month_days[5]=30; 
System.out.println(month_days[5]);

Масиви також можна ініціалізувати зразу ж при їхньому оголошенні, не використовуючи операції new, аналогічно як це відбувається при роботі з простими типами даних.

Наступний приклад зразу ж при оголошенні ініціалізує масив month_days[] кількістю днів в місяцях.

public class DaysOfMonth {
    public static void main(String[] args) {
    int month_days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //оголошуємо та ініціалізуємо масив
    System.out.println("Травень має "+month_days[4]+" день"); // вивід на консоль
    }
}

Результат виконання на екрані:

Травень має 31 день

Наступний приклад демонструє знаходження максимального числа в одновимірному масиві.

public class ArrayMax {
    public static void main(String[] args) {
        double array[]={1.1, 2.2, 1.1, 3.2, 1.2, 2.1};
        double max=array[0];
        for (int i=0;i<6;i++){
            if (max<array[i]) max=array[i];
        }
        System.out.println ("Максимальне число в масиві: "+max);
    }
}

Як бачимо спочатку змінній max присвоюється значення нульового елементу масиву, після чого в циклі іде послідовне порівняння з кожним наступним числом до останнього. Якщо при порівнянні чергове значення в масиві більше за максимальне в змінній max, то змінній max присвоюється дане значення. Як Ви уже зрозуміли, по закінченню циклу у змінній max міститиметься максимальне значення, яке і буде виведене на консоль:

Максимальне число в масиві: 3.2

Багатовимірні масиви [ред.]

Багатовимірні масиви по суті – це масив масивів. Робота з багатовимірними масивами подібна до роботи з одновимірними. Відмінність лише в тому, що використовуються додаткові квадратні дужки. Переважно використовуються двовимірні масиви, які служать для роботи з табличними даними та трьохвимірні масиви. Двовимірний масив та трьохвимірний, можна оголосити наступним чином:

int twoD[][] = new int [4][5]; //створення масиву 4x5
int threeD[][][]=new int[5][5][5]; //створення масиву 5х5х5

Для двовимірного лівий індекс означає номер рядка, а правий номер стовпця. Це можна уявити наступним чином:

[0,0][0,1][0,2][0,3][0,4]
[1,0][1,1][1,2][1,3][1,4]
[2,0][2,1][2,2][2,3][2,4]
[3,0][3,1][3,2][3,3][3,4]

Трьохвимірний масив можна уявити у вигляді куба. Крім номера рядка і номера стовпця, додається ще індекс елемента вглибину.

Наступна програма створює масив 5 на 4, заповнює його випадковими числами і виводить на екран.

import java.util.Random;                    // імпортуємо клас Random
public class RandomArray {
    public static void main(String[] args) {
        int m=5,n=4;                        //оголошуємо і ініцілізуємо змінні з розмірами масиву
        int Array[][] = new int [m] [n];    //оголошуємо і ініціалізуємо масив
        Random generator = new Random();    // створюємо генератор випадкович чисел
        int gn;                 //змінна в яку буде записуватися згенероване генератором число
 
        /***заповнюємо масив випадковими числами***/
        for (int i=0; i<m; i++)             //проходимось по стовпцях
            for (int j=0; j<n; j++){        //проходимось по рядках
                gn=generator.nextInt(100);  //генерація випадкового числа від 0 до 100;
                Array[i][j]=gn;             //записуємо згенероване випадкове число
            }
 
        /***Виводимо результат***/
        for (int i=0; i<m; i++){
            for (int j=0; j<n; j++)         // зверніть увагу на відсутність фігурної дужки
                 System.out.print (Array[i][j]+"    ");//даний рядок відноситься до масиву по j
            System.out.println ();          //виводимо символи переводу каретки і нового рядка
                                            //після кожного проходження стовпцевих елементів рядка
        }
    }
}

В результаті на екрані одержимо:

94    47    65    0
99    20    60    69    
80    33    63    73    
35    50    48    81    
39    19    4    85

У вищенаведеній програмі пояснення потребують три рядка. Для початку Вам необхідно лише в загальному зрозуміти їхнє призначення. Детальніше ж структура і призначення даних рядків буде більш зрозуміла після ознайомлення з такими поняттями як методи, класи, пакети.

import java.util.Random;
Random generator = new Random();
gn=generator.nextInt(100);


Зараз вам достатньо розуміти, що рядком Random generator = new Random(); ми створюємо генератор випадкових чисел, а рядком gn=generator.nextInt(100); - записуємо в змінну gn результат роботи генератора, випадковим числом від 0 до 100.

Якщо більш точніше, то для того, щоб заповнити масив випадковими числами, нам необхідний генератор цілих чисел, який реалізовує класс Random у пакеті java.util. Для цього ми імпортуємо відповідний клас(в С/С++ аналогом є підключення бібліотеки). Далі в програмі створюємо змінну generator, яка вказуватиме на екземпляр класу random і дозволятиме звернення до методів даного класу. new Random() - як бачимо по аналогії до масивів, створює відповідний об'єкт. Для генерації випадкових чисел ми використовуємо метод nextInt() класу Random.


В наведеному прикладі в кожному рядку однакова кількість елементів(стовбців). В Java можна створити двовимірні масиви з різної кількістю елементів в рядках.

int twoD[][]=new int[5][]; //створюємо двовимірний масив з 5-ма стовбцями
int twoD[0]=new int[5]; // виділяємо пам’ять для 5-ти елементів нульового рядка
int twoD[1]=new int[4]; // перший рядок матиме 4-ри елементи
int twoD[2]=new int[3]; // другий - 3
int twoD[3]=new int[2]; // третій - 2
int twoD[4]=new int[1]; // четвертий – 1

Використання таких нерівних (нерегулярних) масивів не рекомендується, оскільки з ними важче працювати і можна припуститися ряд помилок, але в деяких ситуаціях можуть бути доволі корисними.

Як і з одновимірними масивами. Ми можемо зразу ж ініціалізувати масив необхідними значеннями при його оголошенні.

Приклад - Array2.java

public class Array2 {
    public static void main(String[] args) {
 
        int[][] Array= {
            {5, 6, 1, 3},
            {3, 4, 2, 1},
            {1, 2, 2, 2}
         };
         for (int i=0; i<3; i++){
            for (int j=0; j<4; j++)
                 System.out.print (Array[i][j]+"    ");
            System.out.println ();
        }
    }
}

Результат виконання:

5    6    1    3    
3    4    2    1    
1    2    2    2    

Керування порядком виконання · Рядки