Top.Mail.Ru

Перечень уроков по Java

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

Схематично двухмерный массивы можно представить таким образом:

arrayN2

Двумерный массив в Java — это массив массивов.   Создание двумерного массива, также как и одномерного  выполняется в три этапа:

  •      Объявление
  •      Выделение памяти
  •      Инициализация
1. Объявление

 

int [][] a;

 

2. Объявление и выделение памяти,

например, для первой размерности m=10 и второй размерности n=10

int [][] a = new int [10][10];

 

 Особенность

В двумерном массиве каждый элемент первой размерности содержит другой одномерный массив.  Операцией

new int [10][10];

мы выделили память под массив из 10 элементов. Но каждый  элемент  содержит другой одномерный массив и теперь необходимо выделить память под все 10 одномерных массивов.  Делается это так:

 

for(int i = 0; i < a.length; i++)
{
    a[i] = new int [10];
}

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

int[][] a = new int [10][10];

for(int i = 0; i < a.length; i++)
{
    a[i] = new int [10];
}

Создать двумерный массив можно без указания количества элементов второй размерности.

Пример. Создадим массива (таблицу) размерностью - 5 строк на 10 столбцов.

// объявляем и создаем массив из  из 5 строк. Сколько элементов

//будет в каждой строке пока не известно.

int[][] a = new  int[5][];

 

// объявляем и создаем 10 столбцов

for(int i = 0; i < a.length; i++)

{

  a[i] = new int[10];     //таблица будет содержать десять столбцов

}

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

Для вывода  или  обработки двумерных массивов используются два вложенных друг в друга цикла for c счётчиками:

  • Для первой размерности:    a.length – проходим по всем элементам, в нашем примере a.length = 3
  • Для второй размерности:  a[i].length, по все элементам i-строки в нашем примере a[i].length = 3

  for(int i=0; i<a.length; i++) {

    for(int j=0; j<a[i].length; j++) {

    System.out.print(a[i][j] + "\t");   // \t табуляция

       }

    System.out.println();               // Переходим на следующую строку

    }

3. Инициализация массива

Для инициализации двумерного массива можно использовать вложенные циклы for.

Пример. Создадим и заполним массив типа int a[3][5]  случайным образом.

int[][] a = new  int[3][];

// объявляем и создаем 5 столбцов

for(int i = 0; i < a.length; i++)

{

    a[i] = new int[5];     //таблица будет содержать пять столбцов

}

//заполняем массив случайным образом

for(int i=0; i<a.length; i++)

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

            a[i][j] = (int)(Math.random()*10);   //получаем случайные значения

//выводим массив

  for(int i=0; i<a.length; i++) {

    for(int j=0; j<a[i].length; j++) {

    System.out.print(a[i][j] + "\t"); 

       }

    System.out.println(); // Переход на следующую строку

    }

Результат:

3    6    9    6    2   

2    1    2    8    9   

9    0    1    4    1    

 

 

Инициализировать   двумерный массив, явно указав значения его элементов можно так:

int a[][]= {{1,2,3},{4,5,6}, {7,8,9}};

В результате получим такой вот массив:

1    2    3

4    5    6

7    8    9