Как сделать двумерный массив в java
Перейти к содержимому

Как сделать двумерный массив в java

  • автор:

Как создать двумерный массив в java

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

Вот пример создания двумерного массива в Java :

int[][] matrix = new int[3][4]; 

В этом примере мы создаем двумерный массив matrix , который содержит 3 строки и 4 столбца. Каждый элемент массива имеет тип int

Можно также создать двумерный массив с помощью оператора инициализации:

int[][] matrix = 1, 2, 3>, 4, 5, 6>, 7, 8, 9>, 10, 11, 12>>; 

В этом примере мы создаем двумерный массив matrix размером 4×3 и заполняем его значениями при инициализации.

Двумерные массивы в Java

Вы уже знаете что такое массивы в Java и как с ними работать?

1. Если ответ «нет» — прочтите сначала статью «Массивы в Java»

2. Если ответ «да» — читайте статью ниже о двумерных массивах.

Поскольку Вы уже знаете что такое массивы и как с ними работать, наверняка, для Вас не проблема:

  • создать одномерный массив
  • заполнить его значениями
  • и вывести в консоль
Например:

class Test < public static void main ( String [ ] args ) < int [ ] array = < 51 , 136 , 387 >;
for ( int i = 0 ; i < array . length ; i ++ ) < System . out . println ( array [ i ] ) ;

Ну, а что же с двумерным массивом?

Самый, наверное, распространенный пример двумерного массива — это матрица. Если кто забыл что такое матрица, напоминаем:

array_vertex-academy-2

В матрице есть строки и столбцы . На пересечении их стоит определенное значение.

array_vertex-academy-3

Напоминаем, что счет в массивах начинается с 0 .

— число 1 это пересечение 0 — строки и 0 — столбца
— число 2 это пересечение 0 — строки и 1 — столбца
— число 3 это пересечение 1 — строки и 0 — столбца
— число 4 это пересечение 1 — строки и 1 — столбца

Ниже приводим пример объявления двумерного массива на языке программирования Java:

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = new int [ 2 ] [ 2 ] ;

Или можно сразу объявить содержимое массива:

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = < < 1 , 2 >, < 3 , 4 >> ;

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

  • в первой вы пишите количество строк
  • во второй вы пишите количество столбцов

При заполнении двумерного массива Вы указываете в этих скобках строку и столбец.

Например

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = new int [ 2 ] [ 2 ] ; array [ 0 ] [ 0 ] = 1 ; array [ 0 ] [ 1 ] = 2 ; array [ 1 ] [ 0 ] = 3 ; array [ 1 ] [ 1 ] = 4 ;

А как же вывести двумерный массив в консоль?

Вывод двумерного массива с помощью цикла for сильно отличается от вывода обычного массива (когда используется цикл for).

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

Почему так?

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

1. Так что первый цикл for перебирает каждую строку двумерного массива (которая содержит какое-то количество столбцов).

2. А второй цикл for перебирает столбцы в этой строке. Таким образом можно заполнить значением каждый элемент двумерного массива.

Например:

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = new int [ 2 ] [ 2 ] ; array [ 0 ] [ 0 ] = 1 ; array [ 0 ] [ 1 ] = 2 ; array [ 1 ] [ 0 ] = 3 ; array [ 1 ] [ 1 ] = 4 ; for ( int i = 0 ; i < array . length ; i ++ ) < for ( int j = 0 ; j < array [ i ] . length ; j ++ ) < System . out . print ( array [ i ] [ j ] + "\t" ) ; System . out . println ( ) ;

Если Вы запустите данный код на своем компьютере, в консоли Вы увидите:

Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля. Детальную информацию Вы можете найти у нас на сайте.

  • ← Цикл for each в Java
  • Преобразование типов в Java →

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

Не могу понять, как заполнить двумерный массив цифрами от 1 до 8 размерностью 8 на 8, кроме как заполнить его вручную. Но это очень не эффективно. Как сделать?

Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 2 янв 2018 в 4:48
159 1 1 золотой знак 1 1 серебряный знак 10 10 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

public class Main < public static void main(String[] args) < int[][] arr = new int[8][8]; for (int i = 0; i < arr.length; i++) < for (int j = 0; j < arr[i].length; j++) < arr[i][j] = j + 1; >> for (int[] anArr : arr) < for (int anAnArr : anArr) < System.out.print(anAnArr + " "); >System.out.println(); > > 

Отслеживать
ответ дан 2 янв 2018 в 5:32
331 1 1 серебряный знак 7 7 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Массивы в Java: создаём, заполняем, применяем

Учимся работать с массивами в Java. Всё разбираем на примерах.

Артём Авдеев

Артём Авдеев
Java-разработчик, преподаёт в Skillbox, осваивает машинное обучение.

Массив в Java (Java Array) — это структура данных, которая хранит набор пронумерованных значений одного типа (элементы массива).

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

int mark1 = 4; int mark2 = 3; int mark3 = 5; int mark4 = 3; int mark5 = 2; int mark6 = 4; int mark7 = 4; int mark8 = 3; int mark9 = 4; int mark10 = 2;

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

Как создать одномерный массив

В Java массив объявляется с помощью квадратных скобок и специального слова new.

Такой вот синтаксис пришёл из языка C:

тип_массива название_переменной[] = new тип_массива[размер_массива];

Но в Java предпочтительнее делать так:

тип_массива[] название_переменной = new тип_массива[размер_массива];

Тип массива может быть любым (int, Integer, String, Date, byte, char, Long и так далее).

Инициализация массива по умолчанию

Объявим массив типа int из 10 элементов:

int[] marks = new int[10];

При подобной инициализации все элементы массива будут иметь значение по умолчанию. Для int это 0; для float и double — 0.0; для char — \0; для boolean — false, а для String и любого другого класса это null.

В Java размер массива (длина, протяжённость) определяется при объявлении, а изменить его можно только пересоздав массив.

Доступ к элементам массива

Начнём с одномерного массива. Каждый элемент в нём хранится под своим индексом.

Важно помнить, что в Java нумерация элементов массива начинается с 0. Поэтому индекс первого элемента равен 0, а у последнего определяется размером массива минус один.

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

int[] marks = new int[10]; System.out.println(marks[0]); --OUTPUT> 0

В консоли мы получим число 0. Почему ноль — читайте выше, в пункте про инициализацию по умолчанию.

Заполним элементы массива. Для этого обратимся к каждому по индексу и присвоим значения с помощью оператора «=»:

int[] marks = new int[10]; marks[0] = 5; marks[1] = 3; marks[2] = 5; marks[3] = 3; marks[4] = 4; marks[5] = 4; marks[6] = 3; marks[7] = 2; marks[8] = 5; marks[9] = 4;

Инициализация массива на этапе объявления

Теперь у нас есть массив, куда мы записали оценки десяти учеников. С этим уже удобнее работать, чем объявлять 10 переменных, но можно записать ещё короче:

int[] marks = new int[] 5, 3, 5, 3, 4, 4, 3, 2, 5, 4>;

Мы опустили размер массива, поставили фигурные скобки после квадратных и перечислили все значения через запятую. Размер массива теперь определяется числом элементов в фигурных скобках (в нашем случае их тоже 10).

Но нет предела совершенству:

int[] marks = 5, 3, 5, 3, 4, 4, 3, 2, 5, 4>;

После знака «=» остались только фигурные скобки с перечислением значений через запятую.

Обход одномерного массива

У массива в Java есть специальное поле length. Значение в нём нельзя изменить. Оно возвращает число элементов массива:

int[] marks = 5, 3, 5, 3, 4, 4, 3, 2, 5, 4>; System.out.println("Всего оценок: " + marks.length); --OUTPUT> Всего оценок: 10

А раз мы знаем длину массива и что все его ячейки упорядочены, то остаётся обратиться к ним по очереди — в цикле:

int[] marks = 5, 3, 5, 3, 4, 4, 3, 2, 5, 4>; for (int i = 0; i < marks.length; i++) < System.out.printf("Ученик №%d: оценка %d%n", (i + 1), marks[i]); > --OUTPUT> Ученик №1: оценка 5 --OUTPUT> Ученик №2: оценка 3 --OUTPUT> Ученик №3: оценка 5 --OUTPUT> Ученик №4: оценка 3 --OUTPUT> Ученик №5: оценка 4 --OUTPUT> Ученик №6: оценка 4 --OUTPUT> Ученик №7: оценка 3 --OUTPUT> Ученик №8: оценка 2 --OUTPUT> Ученик №9: оценка 5 --OUTPUT> Ученик №10: оценка 4

С помощью счётчика в цикле for мы получаем индекс каждого элемента.

Напомним! Счётчик должен стартовать с 0, так как нумерация в массиве тоже начинается с 0.

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

int[] marks = 5, 3, 4>; String[] names = "Вася", "Петя", "Маша">; for (int i = 0; i < marks.length; i++) < System.out.printf("%s получает оценку %d%n", names[i], marks[i]); > --OUTPUT> Вася получает оценку 5 --OUTPUT> Петя получает оценку 3 --OUTPUT> Маша получает оценку 5

Массив можно обойти и в цикле foreach (подробнее о циклах):

int[] marks = 5, 3, 5, 3, 4, 4, 3, 2, 5, 4>; for (int mark : marks) < System.out.printf("Оценка %d%n", mark); > --OUTPUT> Оценка 5 --OUTPUT> Оценка 3 --OUTPUT> Оценка 5 --OUTPUT> Оценка 3 --OUTPUT> Оценка 4 --OUTPUT> Оценка 4 --OUTPUT> Оценка 3 --OUTPUT> Оценка 2 --OUTPUT> Оценка 5 --OUTPUT> Оценка 4

И в обратном порядке:

int[] marks = 5, 3, 5, 3, 4, 4, 3, 2, 5, 4>; for (int i = marks.length - 1; i >= 0; i--) < System.out.printf("Ученик №%d: оценка %d%n", (i + 1), marks[i]); >

Здесь счётчик стартует со значения на один меньше размера массива, и цикл продолжается «пока счётчик не меньше 0».

Можем пройтись и только по элементам с чётными индексами:

int[] marks = 5, 3, 5, 3, 4, 4, 3, 2, 5, 4>; for (int i = 0; i < marks.length; i += 2) < System.out.printf("Ученик №%d: оценка %d%n", (i + 1), marks[i]); >

А вот как заполнить массив случайными значениями:

int[] marks = new int[10]; Random random = new Random(); for (int i = 0; i < marks.length; i ++) < marks[i] = 2 + random.nextInt(4); >

N-мерные массивы

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

Массивы бывают одномерными (векторы), двумерными (матрицы), трёхмерными и так далее. То есть можно создавать не просто массивы, но и массивы массивов, а также массивы массивов массивов и так далее.

Рассмотрим вариант с двумерным массивом. Остальные многомерные массивы создаются похоже.

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

Чтобы создать двумерный массив в Java, укажем его размеры в квадратных скобках:

int[][] mas = new int[3][4];

Доступ к элементу подобного массива выглядит так:

int[][] mas = new int[3][4]; mas[0][1] = 2;

Мы присвоили значение 2 элементу с индексами [0,1].

Для простоты представим двумерный массив в виде таблицы. Вот как выглядит наш массив (столбцы — это первый индекс в квадратных скобках, а строки — второй):

[0,0] = 0 [1,0] = 0 [2,0] = 0
[0,1] = 2 [1,1] = 0 [2,1] = 0
[0,2] = 0 [1,2] = 0 [2,2] = 0
[0,3] = 0 [1,3] = 0 [2,3] = 0

Несложно представить двумерный массив таблицей, а трёхмерный — кубом, но вот с массивами большей размерности так уже не получится.

Массивы внутри массива в Java могут быть разной длины. Зададим двумерный массив, где размер третьего массива (по индексу второго) равен двум элементам, а размер всех остальных — трём:

int[][] mas2 = 1, 3, 5>, 1, 3, 4>, 1, 3>>;

Как помним, размер массива нам не изменить, но мы можем присвоить новый массив элементу с нужным индексом.

Если мы объявляем двумерный массив так:

int[][] mas = new int[3][4];

то размер каждого вложенного массива будет равен четырём элементам.

А теперь заменим массив под индексом 1 (длиной в четыре элемента) массивом из двух элементов:

int[][] mas = new int[3][4]; mas[1] = new int[2];

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

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

for (int i = 0; i < mas.length; i++) < System.out.printf("Индекс массива в двумерном массиве: %d; длина массива: %d%n", i, mas[i].length); > --OUTPUT> Индекс массива в двумерном массиве: 0; длина массива: 4 --OUTPUT> Индекс массива в двумерном массиве: 1; длина массива: 2 --OUTPUT> Индекс массива в двумерном массиве: 2; длина массива: 4

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

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

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