Назад Зміст Вперед

Урок 4.8. Двовимірні масиви

Двовимірні масиви

Не завжди буває зручно нумерувати ящики на складі з 0 до певного числа, іноді хочеться привести склад у більш впорядкований вигляд, наприклад ввести ряди. Тепер кожен ящик має свій номер ряду і свій порядковий номер у цьому ряді. Нехай на нашому складі є дев'ять ящиків, які містять 1, 2 і так далі 9 апельсинів. Ящики на складі розташовуються в три ряди по три ящики, тоді ситуацію на складі можна представити так:
Індекси012
0123
1456
2789

Приклад. Обробка двовимірного масиву

Підрахувати суму елементів двомірного масиву розміром 3х5, які знаходяться на його "периметрі", тобто крайніх рядках і стовпцях.

Розв’язання. У задачі не сказано про тип елементів та спосіб ініціалізації масиву. Виберемо на власний розсуд: нехай елементами масиву є цілими випадковими з проміжку 0..50.
Лістинг
package masuv_2D;

public class Masuv_2D {

 public static void main(String [ ]args) {
  // масив з 3 рядків і 5 стовпців,
  // це масив з 3 ел., кожен з яких - масив з 5 ел.
  int [ ][ ] a = new int[3][5];
  // ініціалізація масиву випадковими
  // тут a.length - кількість рядків
  // тут a[0].length - кількість стовпців, можна
  // використати a[1].length чи a[2].length
  for (int i=0; i<a.length; i++) {
  for (int j=0; j<a[0].length; j++) {
   a[i][j]=(int)(Math.random()*10);
  }
  }
  System.out.println("Вхідний масив:");
  // виведення вхідного масиву на екран
  for (int i=0; i<a.length; i++) {
  for (int j=0; j<a[0].length; j++) {
  System.out.print("a["+i+"]["+j+"]="+a[i][j]+"\t");
  }
  // переведення курсору виведення на новий рядок
  System.out.println();
  }
  // початкова ініціалізація змінної для суми
  int s=0;
  // обчислюємо суму ел. першого і ост. стовпця
  for (int i=0; i<a.length; i++) {
  s=s+a[i][0]+a[i][a[0].length-1];
  }
  // додаємо до суми ел. першого і останнього рядка,
  // крім крайніх елементів, бо вони вже
  // враховані у попередньому циклі
  for (int j=1; j<a[0].length-1; j++) {
  s=s+a[0][j]+a[a.length-1][j];
  }
  System.out.println("Сума по периметру масиву: "+s);
 }

}

Результат
Вхідний масив:
a[0][0]=4 a[0][1]=2 a[0][2]=9 a[0][3]=5 a[0][4]=4
a[1][0]=8 a[1][1]=5 a[1][2]=0 a[1][3]=7 a[1][4]=2
a[2][0]=9 a[2][1]=6 a[2][2]=4 a[2][3]=6 a[2][4]=5

Сума по периметру масиву: 64

Домашні завдання 
Шилдт: ст.128…131. 
Тести 
Heller: Assesment Test: 11, 27, 
practExam: 10, 
Sanghera: ch.6: 10, ch.2: 16, (+ page 49) 
Jaworsky: p. 72: 19, 20, Sierra5: ch.5: 12.
.