Разное

Многомерные массивы в java: Двумерный массив, одномерный массив, многомерные массивы в Java

Массивы. Часть 3 – многомерные массивы.

В Java многомерные массивы представляют собой массивы массивов.

При объявлении переменной многомерного массива для указания каждого дополнительного индекса используют отдельный набор квадратных скобок. Например, следующий код объявляет переменную двумерного массива twoD.

int

twoD[][] = new int[4][5];

Этот оператор распределяет память для массива размерностью 4×5 и присваивает ссылку на  него переменной twoD. Внутренне эта матрица реализована как массив массивов значений типа int. С точки зрения логической организации этот массив будет выглядеть так:

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

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

int

[][] multiplicationTable;

Каждая пара квадратных скобок представляет одно измерение, поэтому данный массив является двухмерным. Чтобы получить доступ к одиночному элементу int двухмерного массива, нужно указать два значения индекса, по одному для каждого измерения. Если допустить, что данный массив был задан как таблица умножения, то значение int, находящееся в любом элементе, есть произведение этих индексов. Таким образом, значение products[2][4]  равно 8, а значением products[3][7]  будет 21.

Новый многомерный массив создается при помощи ключевого слова new с указанием размеров обоих измерений массива. Например:

int

[][] multiplicationTable = new int[10][10];

В некоторых языках такой массив создается в виде единого блока из 100 значений int. Java поступает иначе. Эта строка кода выполняет три действия:

  • Объявляет переменную с именем multiplicationTable, которая содержит ссылку на массив ссылок, которые в свою очередь будут указывать на массивы int.
  • Создает массив из 10 элементов (первый индекс), который будет содержать ссылки на 10 одномерных массивов int. Вот от сюда собственно и понятие – массив массивов.
    На этой стадии создания массив ссылок заполняется значениями по умолчанию, то есть значениями null.
  • Создает еще 10 массивов, каждый из которых в свою очередь является массивом из 10 элементов int. Присваивает ссылки на каждый из этих 10 новых массивов элементам массива, созданного на втором шаге. По умолчанию каждый элемент int каждого из этих 10 новых массивов получает значение 0.

Другими словами, представленную выше строку кода, можно записать так:

int

[][] multiplicationTable = new int[10][]; // первый индекс содержит ссылки на массивы int
   for (int i = 0; i < 10; i++)
       multiplicationTable[i] = new int[10]; // создаем 10 массивов int

Графически это можно изобразить так:

Очень важно понять, что каждый из массивов с элементами int, располагаются в памяти непрерывным куском, но где и как расположены каждый из них это определяет виртуальная машина java. Исходя из этого есть рекомендация, что наружные (левые) размерности массива лучше делать меньше, а самые больше размерности внутри (правее), поскольку это, во-первых, уменьшит фрагментацию памяти, а во вторых потребует гораздо меньше памяти для размещения массива. Возьмем к примеру вот такие два определения двумерных массивов:

int

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

В случае массива a, количество порождаемых в памяти объектов равно 11, а в случае массива b – 1001. Создание и обслуживание каждого объекта в памяти виртуальной машины имеет свои накладные расходы, так как виртуальная машина считает ссылки для каждого объекта, хранит его атрибуты и т.д. и т.п. Таким образом массив b может занимать в памяти в полтора, а то и в два раза больше места чем массив a.

Чтобы все еще стало понятней, лучше немного попрактиковаться

Данная программа генерирует следующий вывод:

По существу шаги 1 и 2 выполняются в 9 строке программы.

Строки 12-15 лишь выводят значения элементов первого индекса массива, где содержаться указатели на массивы значений int. Но на данный момент там еще значения null, так как им еще не были присвоены ссылки на массивы со значениями int.

После создания массивов int (строки 18-21), на третьем шаге мы видим что теперь в первом индексе, то есть в массиве содержащем ссылки на массивы int уже находятся ссылки на эти массивы.

И теперь если обратиться по обоим индексам массива multiplicationTable, то мы увидим что массивы int были заполнены значениями по умолчанию для данного типа, то есть нулями.

Ключевое слово new автоматически выполняет инициализацию элементов массива значениями по умолчанию.

Ну и затем мы просто присвоили значения каждому элементу массива, которое соответствует результату умножения индексов данного элемента и выводим их на консоль. Это можно сделать и более красиво отформатировав вывод, но это мы пока еще не изучали, поэтому вернемся к этому вопросу чуть позже.

При работе с многомерными массивами в Java очень важно понять, что первые индексы многомерных массивов содержат только массивы ссылок, и только последний (самый правый) индекс содержит непосредственно элемент данных типа объявленного для массива.

То есть в Java можно объявить и более чем двумерные массивы. Например:

int

[][][] dim3D;

И тут очень важно понимать, что первый индекс данного массива, содержит массив ссылок, на второй индекс данного массива, который в свою очередь тоже содержит массив ссылок на массивы значений int.

То есть если в данном случае мы попробуем вывести на консоль значение int[1][1], то мы получим адрес ссылки, то есть примерно то же, что и на шаге 3 в предыдущем примере. И только по полному индексу int[1][1][1] мы сможем получить значение элемента массива типа int.

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

int

[][] multiplicationTable = new int[10][];
multiplicationTable[0] = 10; // ошибка компиляции

Не смотря на то что 10 является значением int, данный код не будет скомпилирован и будет выдана ошибка: cannot convert from int to int[]. Это произошло потому, что ожидается, что данный элемент массива будет хранить ссылку на объект, а не сам объект. Строка 12 в следующем примере, как раз и демонстрирует этот момент, как сделать чтобы не было ошибки.

В тоже время нижеприведенный код не вызовет ошибки компиляции, но вызовет ошибку во время исполнения: NullPointerException.

int

[][] multiplicationTable = new int[10][];
multiplicationTable[0][0] = 10; // ошибка во время исполнения

Это происходит потому, что не был создан объект, в данном случае массив int-ов. То есть мы создали массив хранящий ссылки, на массивы int-ов, но сами эти массивы мы еще не создали, поэтому обращение к несуществующему объекту вызывает данную ошибку. Строка 19 из предыдущего примера, как раз показывает пример правильного создания объектов (массивов), на которые ссылается первый индекс. Ключевое слово new, так же служит и для создания и инициализации вложенных массивов.

В последнем примере, мы создали массив ссылок, но не создали массив int-ов, поэтому к нему и не возможно обратиться. Это можно исправить следующим кодом:

int

[][] multiplicationTable = new int[10][];
multiplicationTable[0] = new int [10];
multiplicationTable[0][0] = 10; // нет ошибки

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

Как уже упоминалось в Java можно создавать массивы любой размерности:

float

[][][] globalTemperatureData = new float[360][180][100];

Если вы создаете многомерные массивы, вам необязательно указывать все измерения массива – важно задать только крайнее слева измерение или измерения. Например, разрешены такие строки:

float

[][][] globalTemperatureData = new float[360][][];
float[][][] globalTemperatureData = new float[360][180][];

Но такие варианты ошибочны:

float

[][][] globalTemperatureData = new float[360][][100]; // Ошибка!
float[][][] globalTemperatureData = new float[][180][100]; // Ошибка!

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

Подобно одномерным массивам, многомерные массивы можно инициализировать при помощи массива-литерала. Нужно просто вложить массивы в другие массивы, применяя множество вложенных фигурных скобок. Пример ниже создает массив products[5][5]:

int

[][] products = { { 0, 0, 0, 0, 0 },
                             { 0, 1, 2, 3, 4 },
                             { 0, 2, 4, 6, 8 },
                             { 0, 3, 6, 9, 12 },
                             { 0, 4, 8, 12, 16 } };

Напомню, что такой синтаксис инициализации, можно использовать только при объявлении массива или при использовании анонимного массива, то есть массива без имени:

boolean

response = bilingualQuestion( question, new String[][] {{ «Yes», «No» },{ «Oui», «Non» } } );

Поскольку в Java многомерные массивы реализуются как массивы массивов,  вы можете использовать не только прямоугольные массвы. Например:

int

[][] triangle = {{1, 2, 3, 4, 5},
                          {6, 7, 8, 9},
                          {10, 11, 12},
                          {13, 14},
                          {15}};

Приведу еще одни пример небольшой магии с массивами в Java, чтобы углубить понимание данной темы.

Данная программа генерирует следующий вывод:

В строке 9 мы создаем и инициализируем одномерный массив. В 11 строке создаем двумерный массив. В 12 строке происходит магия. Если вы внимательно читали, все что было написано до сих пор то должны разобраться что произошло.

Поскольку, как я уже говорил, первые индексы многомерных массивов содержат ссылки на массивы, то в данном случае мы туда присвоили ссылку на одномерный массив oneD.

Если ли же что-то не понятно, то изучайте вывод данной программы, если вообще не понятно пишите комментарии к статье.

А пока добавлю еще немножко магии к предыдущей программе

Тут я добавил в строках 20 и 21 поясняющий вывод, что же сталось с массивами и как они выглядят после операции в строке 17.

Кроме этого были добавлены строки создания массива int-ов, для второго индекса массива twoD, то есть для индекса 1, а так же заполнения его значениями. Это строки 23-25.

Далее, строка 26, просто вывод массива twoD на консоль.

В 27 строке небольшая магия, мы присвоили ссылку на массив int-ов, которые только что создали в массиве twoD, массиву oneD.

Затем вывели содержимое массива oneD на консоль. И уже после этого адреса ссылок на массивы.

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

Теперь наша программа генерирует следующий вывод:

А теперь поколдуем немножко с не прямоугольными массивами, дабы понять тему многомерных массивов в Java еще глубже.

Это пример работы с треугольным или ступенчатым массивом. На самом деле массивы int-ов могут быть произвольной длинны.

В 16 строке мы воспользовались стандартной библиотечным методом (Arrays. deepToString) SDK для вывода многомерных массивов на консоль, но как видно из вывода, данный метод выводит любой многомерный массив в строку, разделяя его размерности квадратными скобкам, что не очень наглядно.

Затем в цикле (строки 18-23) мы выводим треугольный массив более наглядным образом.

 

Следующий пример чуть интересней, будем превращать прямоугольный массив в треугольный.

В данной программе мы изначально имеем три массива: один одномерный и два двумерных, но с разным количеством элементов в строках – 2 и 3 соответственно.

Как видно на примере вывода данной программы справа, сперва мы выводим все три массива в их изначальном состоянии.

В строках 31 и 32 мы колдуем с массивом three и затем выводим результат нашего шаманства на консоль.

В результате, как-бы, получаем честный треугольный массив.

Как-бы, это потому, что на самом деле последние два индекса ссылаются массивы two и one.

А честный он потому, что нам придется с ним работать уже как с треугольным, так как, например, после магии мы уже не сможем обратиться к индексу three[2][2], поскольку получим ошибку во время исполнения программы ArrayIndexOutOfBoundsException. А как-бы он потому, что работая с индексами three[1] и three[2] мы на самом деле будем работать с массивами two и one соответственно.

Теперь рассмотрим простенький пример трехмерного массива. Следующая программа создает трехмерный массив размерности 3×4×5. Затем она инициализирует каждый элемент произведением его индексов и выводит все это дело на консоль.

Данная программа генерирует следующий вывод:

Вот такое у нас 3D

 

Ну и в завершение данного поста приведу программу сортировки двумерного массива пузырьком.

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

Данная программа может принимать аргументы из командной строки и создавать двумерные массивы заданной размерности. Если аргументы не переданы то создается массив 10х10. Затем он заполняется случайными числами, копируется в массив который будет отсортирован первым алгоритмом, сортируется, выводится на консоль, затем несортированный снова копируется для сортировки, сортируется вторым алгоритмом и выводится на консоль.

Данная программа может сгенерировать следующие выводы:

Тут приведены примеры запусков без аргументов и с аргументами из командной строки.

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

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

Объяснять отличие работы второго алгоритма немного ленно. Постарайтесь разобраться сами.

Если не получится и если сильно интересно, пишите вопросы в комментариях, дабы мне не тратить понапрасну время на объяснения тут.

В следующем посте разберем некоторые методы работы с массивами из стандартной библиотеки.

java длина двумерного массива — Все о Windows 10

Содержание

  1. Многомерные массивы в Java
  2. Многомерные массивы в Java
  3. Матрицы и двумерные массивы в Java
  4. Многомерные и несимметричные массивы.
  5. Как инициализировать двумерный массив в Java?
  6. Как инициализировать трёхмерный массив в Java?

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

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

Для примера рассмотрим двумерный массив в Java.

Двумерные массивы Java – это прямоугольная или не прямоугольная таблица чисел.

Двумерный массив Java состоит из рядов и столбцов.

Первый индекс двумерного массива Java – это число рядов.

Пример двумерного прямоугольного массива Java:

Здесь объявлен и определен двумерный массив, имеющий две строки и два столбца.

Загрузим массив элементами:

Вывод двумерного массива (перебираем массив):

Получаем:

© 2008 по настоящее время, sbp-program.ru

SBP-Program. Получайте знания и становитесь конкурентоспособными.

В уроке 10 мы научились создавать одномерные массивы. Подобным образом в Java можно создать двумерный, трехмерный, четырехмерный… иначе говоря, многомерные массивы. Многомерный массив в Java по сути является массивом из массивов.

Популярным примером использования такого рода массивов, являются матрицы, для представления которых, используются двумерные массивы. Итак, что же такое матрица и как ее представить с помощью двумерного массива в Java.

Матрицы и двумерные массивы в Java

Матрица это прямоугольная таблица, состоящая из строк и столбцов на пересечении которых находятся её элементы. Количество строк и столбцов матрицы задают ее размер.

Общий вид матрицы размером m x n ( m — количество строк, n — количество столбцов), выглядит следующим образом:

Каждый элемент матрицы имеет свой индекс, где первая цифра обозначает номер строки на которой находится элемент, а вторая — номер столбца.

Рассмотрим примеры конкретных матриц и создадим их с помощью Java.

Матрица A имеет размерность 2 на 3 (2 строки, 3 столбца). Создадим двухмерный массив этой размерности:

Мы объявили двумерный массив целых чисел (поскольку матрица в данном случае содержит целые числа) и зарезервировали для него память. Для этого мы использовали 2 индекса: первый индекс определяет строку и ее размер, второй индекс определяет столбец и его размер.

Далее будем инициализировать массив поэлементно. Запишем матрицу A в виде таблицы, чтобы было визуально понятно, какому индексу соответствует элемент.

Для доступа к элементам двумерного массива необходимо использовать 2 индекса: первый для строки, второй – для столбца. Как и в случае с одномерными массивами, индексы также начинаются с нуля. Поэтому нумерация строк и столбцов в таблице начинается с 0.

Для того, чтобы вывести матрицу на консоль, нужно пройти все элементы, используя два цикла. Количество циклов, при прохождении элементов массива, равно его размерности. В нашем случае первый цикл осуществляется по строкам, второй — по столбцам.

То есть, сначала выводим все элементы первой строки, отделяя их символом табуляции » «, переносим строку и выводим все элементы второй строки.

Полностью код для матрицы А выглядит следующим образом:

Для матрицы B воспользуемся упрощенным способом инициализации — в момент объявления. По аналогии с одномерными массивами.

Каждую строку массива необходимо заключить в пару фигурных скобок и отделить друг от друга запятой.

Полностью код для матрицы B:

Рассмотрим инициализацию в цикле для двумерного массива на примере таблицы умножения.

Здесь инициализация элементов значениями таблицы умножения совмещена с их выводом на консоль в одном цикле.

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

Создаются многомерные массивы в Java аналогичным способом. Количество квадратных скобок указывает на размерность.
Примеры создания массивов фиксированной длины:

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

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

В результате, при выводе на экран,

массив будет иметь такой вид:

0
0 0
0 0 0
0 0 0 0
0 0 0 0 0

При создании массива его элементы автоматически инициализируются нулями, поэтому в это примере на экран выведены нули.

В Java можно объявить массив массивов, известный как многомерный массив. К примеру:

Здесь мы видим двухмерный массив Java , который может содержать до 12 элементов типа int :

Не забывайте, что индексирование в Java начинается с нуля, поэтому первые элементы массива имеют индекс 0 , а не 1 .

Аналогично можно объявить и трёхмерный ( 3D ) массив. Например:

В примере выше personalInfo — это трёхмерный массив, в котором может быть до 24 (3*4*2) элементов типа String .

В Java составляющие многомерного массива — это тоже массивы. Если вы знаете C/C++ , то может показаться, что многомерные массивы в Java и C/C++ работают одинаково. Но это не совсем так — в Java ряды массивов могут быть разной длины. Разницу мы увидим во время инициализации.

Как инициализировать двумерный массив в Java?

Ниже приводится пример инициализации двумерного массива Java :

Каждый компонент массива также представляет собой массив, и длина каждого ряда отличается:

Давайте напишем программу, чтобы это доказать:

При запуске этой программы мы получим:

Длина ряда 1: 3
Длина ряда 2: 4
Длина ряда 3: 1

Поскольку многомерный массив состоит из отдельных массивов (a[0], a[1] and a[2]) , можно использовать метод length для определения длины каждого ряда длины двумерного массива Java.

Пример: вывод на экран всех элементов двумерного массива с помощью циклов :

Всегда лучше использовать цикл for…each , когда нужно пройти по элементам массива. Пример сортировки двумерного массива Java можно записать с помощью цикла for…each следующим образом:

При запуске этой программы мы получим следующий результат заполнения двумерного массива Java :

Как инициализировать трёхмерный массив в Java?

Трёхмерный массив инициализируется почти так же, как двухмерный:

Трёхмерный массив — это массив, состоящий из двумерных массивов. Как и у двумерных массивов Java , его ряды могут быть различной длины.

Пример: программа для вывода элементов трёхмерного массива с помощью циклов :

При запуске программы вывода двумерного массива Java получаем следующий результат:

Данная публикация представляет собой перевод статьи « Java Multidimensional Arrays » , подготовленной дружной командой проекта Интернет-технологии.ру

Учебное пособие по Java: Многомерные массивы в Java

Введение в Java + Установка Java JDK и IntelliJ IDEA для Java

Базовая структура программы на Java: Понимание нашей первой программы Hello World на Java

Учебное пособие по Java: Переменные и типы данных в программировании на Java

Учебное пособие по Java. Литералы в Java

Учебное пособие по Java. Получение пользовательского ввода в Java

Программирование на Java. Упражнение 1. Калькулятор процентного соотношения платы CBSE

Учебное пособие по Java. Глава 1. Практический набор | Проблемы с практикой Java с решением

Учебное пособие по Java. Операторы, типы операторов и выражения в Java

Учебное пособие по Java. Ассоциативность операторов в Java

Учебное пособие по Java. Тип данных выражений и операторы увеличения/уменьшения

Учебное пособие по Java.

Учебное пособие по Java: Глава 2. Практический набор (вопросы по практике Java)

Учебное пособие по Java: Введение в строки

Учебное пособие по Java: Строковые методы в Java

Практические вопросы по Java по строкам: Практический набор по строкам Java (необходимо решить!)

Условные операторы Java: Оператор If-else в Java

Учебное пособие по Java: Реляционные и логические операторы в Java

Учебное пособие по Java: Операторы Switch Case в Java

Учебное пособие по Java: Практические вопросы по условным операторам и Switch Case

Упражнение по программированию на Java 2 : Rock, Paper Scissors Game в Java

Учебное пособие по Java: циклы While в Java

Учебное пособие по Java: цикл do-while в Java

Учебное пособие по Java: цикл for в Java

Учебное пособие по Java: прерывание и продолжение в Java

Учебное пособие по Java: Практические вопросы по циклам

Учебное пособие по Java: Введение в массивы

Учебное пособие по Java: Для каждого цикла в Java

Учебное пособие по Java: Многомерные массивы в Java Практические вопросы по массивам в Java

Как сделать так, чтобы IntelliJ IDEA выглядела потрясающе!

Учебное пособие по Java. Методы в Java

Учебное пособие по Java. Перегрузка методов в Java

Учебное пособие по Java. Переменные аргументы (VarArgs) в Java

Учебник по Java. Рекурсия в Java

Учебник по Java. Практические вопросы по методам Java

Учебник по Java. Введение в объектно-ориентированное программирование

Учебник по Java.

Учебное пособие по Java. Основные вопросы по объектно-ориентированному программированию

Учебное пособие по Java. Модификаторы доступа, геттеры и сеттеры в Java

Учебное пособие по Java. Упражнение 2. Решение и комментарии

Учебное пособие по Java. Конструкторы в Java

Упражнение по Java 3. Угадай число (версия OOPs)

Учебное пособие по Java. Упражнение по модификаторам доступа и конструкторам

Наследование в Java

Наследование конструкторов в Java

this и ключевое слово super в Java

Переопределение метода в Java

Динамическая отправка методов в Java

Учебное пособие по Java: Упражнение 3 — Решения и комментарии

Учебное пособие по Java: Упражнение 4 — Онлайн-библиотека

Учебник по Java: Упражнения и практические вопросы по наследованию

Учебник по Java: Абстрактные классы и абстрактные методы

Учебник по Java: Введение в интерфейсы

Учебник по Java: Абстрактные классы и интерфейсы

Почему множественное наследование не поддерживается в Java?

Пример интерфейса Java и методы по умолчанию

Наследование в интерфейсах

Учебник по Java: Полиморфизм в интерфейсах

Практика Java Вопросы по абстрактным классам и интерфейсам

Java-упражнение 4: решение и приветствие!

Интерпретируемые и компилируемые языки!

Java интерпретируется или компилируется?

Пакеты в Java

Учебник по Java. Создание пакетов в Java

Модификаторы доступа в Java

Практический набор по пакету и модификаторам доступа в Java

Упражнение 5 по Java: Создание пользовательского пакета путем расширения класса Thread

Создание потока Java с использованием интерфейса Runnable

Жизненный цикл потока Java

Конструкторы из класса Thread в Java

Приоритеты потока Java

Методы потока Java

Учебник по Java: практические вопросы по потоку

Упражнение 5: Решение и приветствие!

Ошибки и исключения в Java

Синтаксические ошибки, ошибки времени выполнения и логические ошибки в Java (демонстрация)

Исключения и блок Try-Catch в Java

Обработка определенных исключений в Java

Вложенный Try-Catch в Java

Класс Exception в Java

Throw vs Throws в Java

Наконец блок в Java и зачем он нужен!

Практический набор по ошибкам и исключениям

Java-упражнение 6: Пользовательский калькулятор | Практический вопрос по Java

Java Collections Framework

Иерархия коллекций в Java

Как правильно просматривать документацию по Java

ArrayList в Java: демонстрация и методы

LinkedList в Java: демонстрация и методы

ArrayDeque в Java

Хеширование в Java

HashSet в Java

Дата и время в Java

Класс Date в Java

Класс календаря в Java

java2 GregoriantimeCalendar class & TimeZone в java Классы и методы

DateTimeFormatter в Java

Advanced Java Practice Set

Java Упражнение 6: Решение | Пользовательский калькулятор

Java Упражнение 7: Система управления библиотекой в ​​Java

Создание собственных документов JavaDocs для нашего пакета

Javadocs: теги для документирования классов

Javadocs: теги методов для создания документации java

Advanced Java 2 — практический набор

Упражнение 7. Решения + комментарии

Java для начинающих — многомерные массивы

Домашнее обучение: курс программирования на Java


Массивы, которые вы использовали до сих пор, содержали только один столбец данных. Но вы можете настроить массив для хранения более одного столбца. Они называются многомерными массивы. В качестве примера представьте электронную таблицу со строками и столбцами. если ты иметь 6 строк и 5 столбцов, тогда ваша электронная таблица может содержать 30 чисел. Это может выглядеть так:

Многомерный массив — это тот, который может содержать все указанные выше значения. Ты устанавливаешь их так:

int[ ][ ] aryNumbers = new int[ 6 ][ 5 ];

Они настроены так же, как и обычный массив, за исключением того, что у вас есть два набора квадратных скобок. Первый набор квадратных скобок предназначен для строк и второй набор квадратных скобок для столбцов. В приведенной выше строке кода мы говорим Java настроить массив с 6 строками и 5 столбцами. Для хранения значений в многомерном массиве вы должны следить за строками и столбцами. Вот некоторый код для заполнения первых рядов чисел из нашего изображения электронной таблицы:

aryNumbers[0][0] = 10;
aryNumbers[0][1] = 12;
aryNumbers[0][2] = 43;
aryNumbers[0][3] = 11;
aryNumbers[0][4] = 22;

Итак, первая строка — это строка 0. Затем столбцы идут от 0 до 4, что составляет 5 элементов. Чтобы заполнить вторую строку, это будет так:

aryNumbers[1][0] = 20;
aryNumbers[1][1] = 45;
aryNumbers[1][2] = 56;
aryNumbers[1][3] = 1;
aryNumbers[1][4] = 33;

Номера столбцов те же, но номера строк теперь равны 1.

Для доступа ко всем элементам многомерного массива используется метод одна петля внутри другой. Вот некоторый код для доступа ко всему нашему номеру сверху. Он использует двойной цикл for:

Первый цикл for используется для строк; второй цикл for предназначен для столбцов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *