русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-06-12; просмотров: 616; Нарушение авторских прав


Теперь перейдем к рассмотрению многомерных массивов. Так, в сле­дующем примере

jnti[][]=newint[3][5];

переменная i ссылается на двумерный массив, который можно предста­вить себе в виде таблицы 3x5. Суммарно в таком массиве содержится 15 элементов, к которым можно обращаться через комбинацию индексов от (О, 0) до (2, 4). Пример заполнения двумерного массива через цикл:

int pithagor_table[][]=new int[5][5]; for (int i=0; i<5; \++) { for(intj=0;j<5;j++){

pithagor_table[i][j]=i*j;

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

System.out.printlnO;}

Результатом выполнения программы будет:

0 0 0 0 0

0 12 3 4

0 2 4 6 8

О 3 6 9 12

0 4 8 1216

Однако такой взгляд на двумерные и многомерные массивы является Неполным. Более точный подход заключается в том, что в Java нет двумер­ных, и вообще многомерных массивов, а есть массивы, базовыми типами которых являются также массивы. Например, тип int[] означает "массив ^сел", а int[][] означает "массив массивов чисел". Поясним такую точку зрения.

Если создать двумерный массив и определить переменную х, которая на него ссылается, то, используя х и два числа в паре квадратных скобок каждое (например, х[0][0]), можно обратиться к любому элементу двухмерного массива. Но в то же время, используя х и одно число в паре ква­дратных скобок, можно обратиться к одномерному массиву, который является элементом двумерного массива. Его можно проинициализировать Новым массивом с некоторой другой длиной и таблица перестанет быть прямоугольной — она примет произвольную форму. В частности, можно одному из одномерных массивов присвоить даже значение null.

int x[][]=new int[3][5]; // прямоугольная таблица

x[0]=newint[7];

x[1]=newint[0];

x[2]=null:

После таких операций массив, на который ссылается переменная х, назвать прямоугольным никак нельзя. Зато хорошо видно, что это просто набор одномерных массивов или значенийnull.



Полезно подсчитать, сколько объектов порождается выражением new int[3][5]. Правильный подсчет таков: создается один массив массивов (один объект) и три массива чисел, каждый длиной 5 (три объекта). Итого, четыре объекта.

В рассмотренном примере три из них (массивы чисел) были тут же переопределены новыми значениями. Для таких случаев полезно исполь­зовать упрощенную форму выражения создания массивов:

intx[][]=newint[3][];

Такая запись порождает один объект — массив массивов — и заполня­ет его значениями null. Теперь понятно, что и в этом, и в предыдущем ва­рианте выражение х.length возвращает значение 3 — длину массива мас­сивов. Далее можно с помощью выражений x[i].length узнать длину каж­дого вложенного массива чисел, при условии, что i неотрицательно и меньше x.length, а также х[1] не равно null. Иначе будут возникать ошибки во время выполнения программы.

Вообще, при создании многомерных массивов с помощью new необ­ходимо указывать все пары квадратных скобок, соответственно количест­ву измерений. Но заполненной обязательно должна быть лишь крайняя левая пара, это значение задаст длину верхнего массива массивов. Если за­полнить следующую пару, то этот массив заполнится не значениями по умолчанию null, а новыми созданными массивами с меньшей на единицу размерностью. Если заполнена вторая пара скобок, то можно заполнить третью, и так далее.

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

int ![][] = {{1,2}, null, {3}.{}};

В этом примере порождается четыре объекта. Это, во-первых, масса массивов длиной 4, а во-вторых, три массива чисел с длинами 2, 1,0, соответственно.

Все рассмотренные примеры и утверждения одинаково верны для одномерных массивов, основанных как на примитивных, так и на ссылочных типах.



<== предыдущая лекция | следующая лекция ==>
Инициализация массивов | Класс массива


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.182 сек.