Валерий Станиславович Яценков

Java за неделю. Вводный курс


Скачать книгу

по каждому индексу начинается с нуля. Размер массива зависит от того, о каком массиве идет речь – внешнем или вложенном. Размер по первому индексу означает количество вложенных массивов (количество строк):

      int x = coord. length; // x = 10

      Размер по второму индексу означает количество элементов вложенного массива (количество столбцов):

      int y = coord [0].length; // y = 15

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

      5.2.1 Инициализация двумерного массива

      Двумерный массив можно инициализировать при создании, перечислив значения в явном виде в конструкции из фигурных скобок:

      int [] [] nums = {{4,9,12,0}, {2,7,3,5}};

      Для инициализации массива упорядоченными данными используются вложенные циклы. Сейчас вы уже готовы написать программу инициализации двумерного цикла самостоятельно. Один из возможных вариантов программы приведен в листинге 5.2.

      Листинг 5.2 Инициализация двумерного массива

      public class Listing5_2 {

      public static void main (String [] args) {

      // Объявление двумерного массива 10x15

      int [] [] coord = new int [10] [15];

      // Перебор элементов внешнего массива

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

      // Перебор элементов вложенного массива

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

      // Пример выражения для генерации значений

      coord [i] [j] = (i+j) *j;

      }

      }

      // Вывод сформированных значений на печать

      for (int [] tmp1:coord) {

      for (int tmp2:tmp1) {

      System.out.print (tmp2+"\t»);

      }

      System.out.print (»\n»);

      }

      }

      }

      Разберем подробнее этот пример. После того, как объявлен двумерный массив с размерностью 10х15, мы организуем вложенный цикл для заполнения ячеек массива некими автоматически сгенерированными данными.

      В качестве граничного параметра цикла используем запрос длины массива, например:

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

      Как вы помните, индексация начинается с нуля, и максимальный индекс на единицу меньше, чем размер массива. Именно поэтому в цикле используется условие «меньше», а не «меньше или равно». В данном случае размер внешнего массива равен 10, а индексы принимают значения от 0 до 9. Аналогично происходит перебор элементов массива по второму индексу при помощи вложенного цикла.

      Для генерации значений использовано произвольное выражение:

      coord [i] [j] = (i+j) *j;

      Вместо него можно подставить любое другое выражение или источник данных. Важно лишь, чтобы тип данных, возвращаемых выражением, совпадал с типом данных массива.

      Сформировав данные, мы выводим их на печать для проверки. Для перебора значений используем сокращенную форму оператора for. В случае с двумерным массивом есть некоторые тонкости. Обратите внимание на типы переменных цикла в объявлении внешнего и внутреннего цикла:

      for (int []