Двумерные массивы в 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 ] ) ;
Ну, а что же с двумерным массивом?
Самый, наверное, распространенный пример двумерного массива — это матрица. Если кто забыл что такое матрица, напоминаем:
В матрице есть строки и столбцы . На пересечении их стоит определенное значение.

Напоминаем, что счет в массивах начинается с 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 →
Операции с массивами

Значение, которое распечатывается с помощью print… сначала обязательно (можно сказать, принудительно) преобразовывается в строку. Поэтому мы видим нечто подобное тому, что было выше.
Чтобы избежать этого, нужно явно указать компилятору, что массив преобразовывается в строку специальным методом:
![]()
Можно и другим способом, предварительно импортировав библиотеку:
import java.util.Arrays; int[] numberArray = < 12, 24, 63, 45 >; System.out.println(Arrays.toString(numberArray));
Найдем теперь минимальное значение в массиве. Чтобы код заработал в импортах не забываем добавить import java.util.Arrays; (как было показано выше):
final int size = 5; // размер массива int array[] = new int[size]; int minValue = Integer.MAX_VALUE; // тут будет минимум for (int counter = 0; counter < size; counter ++) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; >// end for System.out.println("Array: " + Arrays.toString(array)); // найдём минимальное значения массива циклом for-each System.out.print("Min value: "); for (int item : array) < if(item < minValue) < minValue = item; >> // end for-each System.out.println(minValue);
Для поиска максимального значения код немного дорабатывается (не забываем про import):
final int size = 5; // размер массива int array[] = new int[size]; int maxValue = Integer.MIN_VALUE; // тут будет максимум for (int counter = 0; counter < size; counter ++) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; >// end for System.out.println("Array: " + Arrays.toString(array)); // найдём минимальное значения массива циклом for-each System.out.print("Max value: "); for (int item : array) < if (item >maxValue) < maxValue = item; >> // end for-each System.out.println(maxValue);
Среднее арифметическое находится как сумма элементов массива, делённая на их число (не забываем про import):
final int size = 5; // число элементов массива int array[] = new int[size]; double average = 0; // тут будет среднее арифметическое double sum = 0; // тут будет сумма значений массива for (int counter = 0; counter < size; counter ++) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; >// end for System.out.println("Array: " + Arrays.toString(array)); // найдём сумму значений массива циклом for-each System.out.print("Average value: "); for (int item : array) < sum += item; >// end for-each average = sum / size; // среднее арифметическое System.out.println(average);
Операции с многомерными массивами
Что такое многомерный массив?
Если элементом массива является другой массив, то такой массив называют многомерным:

Пока ограничимся двумерным массивом, который представляет собой таблицу (матрицу).
Например:

Двумерный массив можно сразу инициализировать значениями, как и одномерный. Тот же массив 3 x 3, с выводом с помощью циклов for:
int [][] a = , , >; // вывод вложенными циклами for (int i = 0; i < 3; i++) < // идём по строкам for (int j = 0; j < 3; j++) < // идём по столбцам System.out.print(" " + a[i][j] + " "); //вывод элемента >// очередная строка завершена System.out.println(); // перенос строки для придания // табличной формы > // завершён вывод столбца
Чтобы узнать длину двумерного массива, одной записи:
int [][] a = , , >; System.out.print(a.length); // длина массива // Выведет: 3
будет недостаточно. Так мы узнали только число строк.
Для того, чтобы узнать число столбцов, необходимо также записать a[0].length. В итоге можно записать:
int [][] a = , , >; System.out.println("Rows:" + a.length); System.out.println("Cols:" a[0].length);
Теперь доработаем код:
int [][] a = , , >; int rows = a.length; // число строк nt cols = a[0].length; // длина первой строки // вывод вложенными циклами for (int i = 0; i < rows; i++) < // идём по строкам for (int j = 0; j < cols; j++) < // идём по столбцам System.out.print(" " + a[i][j] + " "); // вывод элемента >// очередная строка завершена System.out.println(); // перенос строки для придания // табличной формы > // завершён вывод столбца
Для быстрого вывода элементов двумерного массива (списком) применяется метод deepToString класса Arrays (в импортах не забываем добавляем import java.util.Arrays;) Пример:
myArray = , < 28, 45, 90 >, < 45, 3, 14 >>; System.out.println(Arrays.deepToString(myArray)); Результат работы программы — следующий вывод: [[18, 28, 18], [28, 45, 90], [45, 3, 14]].
Задача : написать программу заполнения двумерного массива 3 x 3 случайными значениями от 0 до 9 с выводом таблицей.
Решение (раскрыть) [Свернуть]:
int[][] a = new int[3][3];
int rows = a.length;
int cols = a[0].length;
// заполняем случайными значениями
for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) a[i][j] = (int) (Math.random() * 10);
>
>
// вывод вложенными циклами
for (int i = 0; i < rows; i++) < //идём по строкам
for (int j = 0; j < cols; j++) < //идём по столбцам
System.out.print(" " + a[i][j] + " "); //вывод элемента
> // очередная строка завершена
System.out.println(); //перенос для табличного вида
> // завершён вывод столбца
Вывод массива в виде матрицы
Вывод массива в виде матрицы
Привожу часть кода к задаче, которую решаю. Подскажите, пожалуйста, как вывести массив виде.
Вывод массива в виде матрицы
Есть двумерный массив, заполненный 0 и 1. необходимо вывести этот массив в виде матрицы, но что бы.
Вывод двумерного массива в виде матрицы в консоли
Помогите пожалуйста вывести массив в виде матрицы static void Main(string args) < .
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
Доброй ночи!
Denis 29, вы хотите вывести на печать трёхмерный массив? Я конечно не гуру в программировании, но сами посудите:
Сообщение от Denis_29 
Как вывести его в виде строк и столбиков
одна размерность — это строка, вторая размерность — столбцы, а третья? Это что должно быть? Диагонали? Многомерные массивы существуют, но это не матрица, а скорее массивы массивов и табличного (матричного) представления не имеют. Хотя я могу и ошибаться, ежели что, то мои рассуждения подправят. А вот такой код выдаёт трёхмерный массив в виде массива массивов, пригодного для рассмотрения:
1 2 3 4 5 6 7 8 9 10 11 12
public static void main(String args[]) { int[][][] mas = new int[5][5][5]; for(int i = 0; i 5; i++){ for(int j = 0; j 5; j++){ for(int k = 0; k 5; k++){ mas[i][j][k] = (int) (Math.random() * 100); //заполняем массив случайными числами от 0 до 99 } } } System.out.println(Arrays.deepToString(mas)); } }
Регистрация: 05.05.2015
Сообщений: 17
То есть для того чтобы вывести символы в строку, надо использовать метод deepToString? Почему то у меня ошибка : The method deepToString(int[][][]) is undefined for the type Arrays.
59 / 59 / 12
Регистрация: 01.01.2010
Сообщений: 222
Исходя из вашего кода сколько строк и столбиков должно быть в конечном варианте на ваш взгляд?
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
Одномерный массив — одна строка вывода
Двумерный массив (матрица) — n строк вывода
Трехмерный массив — .
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
Ok! «Мы тут посовещались и я решил. » Проводя аналогию между электронными таблицами и многомерными массивами можно сделать такое допущение: двухмерный массив — это таблица, а трёхмерный — это листы с таблицами, четырёхмерный — книга с листами и т.д..
Значит
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
//объявление массива таким образом: int[][][] mas = new int[3][4][5]; //эквивалентно вот такому виду: int[][][] mas = { { {1, 1, 23, 13, 75}, {32, 5, 54, 7, 32}, {69, 79, 5, 20, 9}, {44, 7, 4, 95, 72} }, { {8, 70, 1, 29, 34}, {91, 39, 7, 54, 1}, {59, 72, 4, 79, 8}, {0, 8, 10, 51, 95} }, { {40, 2, 0, 58, 81}, {35, 78, 8, 39, 0}, {54, 4, 7, 48, 31}, {21, 6, 9, 16, 46} } }; //обращаем внимание на скобки.
А распечатать удастся вот таким кодом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
public static void main(String[] args) { int[][][] mas = new int[3][4][5]; for(int i = 0; i 3; i++){ System.out.println(); for(int j = 0; j 4; j++){ System.out.println(); for(int k = 0; k 5; k++){ mas[i][j][k] = (int) (Math.random() * 100); //заполняем массив случайными числами от 0 до 99 System.out.print(mas[i][j][k] + "\t"); } } } } }
Сообщение от Denis_29 
Почему то у меня ошибка : The method deepToString(int[][][]) is undefined for the type Arrays.
Первое: следует закончить объявление массива int [][][] array = new int[3][4][5];
Второе: даже это не избавляет от ошибки, массив разумнее объявить где-нибудь заранее, а методу уже передавать определённое имя.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Вывод строки в виде элемента массива (матрицы)
помогите, не знаю как задать код чтобы выводило строку в массиве в заданных местах, хотя если.
Массив: Заполнение и вывод на экран массива в виде матрицы
Ребята спасайте,нужно сделать двумерный массив который: 1. При заполнении выглядел как матрица 2.
Вывод двумерного массива в виде матрицы — как разделить строки?
Как можно "красиво" вывести двумерный массив? Например, так: 1 1 1 2 2 2 3 3 3 Не пойму.

Ввод элементов массива, вещественных чисел и вывод в виде матрицы
Задача в курсовой. Разработать алгоритм и составить программу, выполняющей ввод элементов.
Ввод элементов массива ,вещественных чисел и вывод в виде матрицы, определение максимального элемента
Разработать алгоритм и составить программу, выполняющей ввод элементов массива А(4х4) вещественных.
Как сделать вывод в виде матрицы (4х4) из массива int[] quad и переменной text2?
Как сделать вывод в виде матрицы (4х4) из массива int quad и переменной text2? int num =.
Двумерный массив в виде матрицы
Вывести двумерный массив в виде матрицы, найти минимальную строку этой матрицы
Помогите пожалуйста!Как вывести двумерный массив в виде матрицы? И как найти минимальную строку.
двумерный массив в виде матрицы
у меня должна получиться матрица 1 1 1 1 0 2 2 2 0 0 3 3 0 0 0 ребя подскажите как.
Двумерный массив вывести в виде матрицы
Ребят подскажите как вывести на экран двумерный массив в виде матрицы?? не получается #include.
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435

Сообщение было отмечено Rudman132 как решение
Решение
1 2 3 4 5 6
for (int[] row : arr2) { for (int i = 0; i row.length; i++) { System.out.print(row[i] + " "); } System.out.println(); }
![]()
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
потому что ты написал такой код
87 / 31 / 16
Регистрация: 01.06.2019
Сообщений: 642
Arsegg, массив заполнить нужно с помощью класса Random
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
Сообщение от Rudman132 
массив заполнить нужно с помощью класса Random
Так заполни. В чем проблема?
Добавлено через 1 минуту
И вообще п. п. 4.4 Правил форума:
На каждый вопрос создавайте по одной теме — это помогает избежать путаницы в ответах и облегчает поиск.
87 / 31 / 16
Регистрация: 01.06.2019
Сообщений: 642
Arsegg, спасибо, заполнил, а как сдвинуть на 1 позицию вправо?
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
Сообщение от Rudman132 
а как сдвинуть на 1 позицию вправо?
Как это понимать?
87 / 31 / 16
Регистрация: 01.06.2019
Сообщений: 642
Arsegg, сделать сдвиг значений во всех вложенных одномерных массивах
вправо на 1 позицию. Элементы, которые были в конце должны переместиться в начало.
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
Rudman132, и в чем сложности? Не можешь in-place — пиши в другой массив и заменяй исходный.
634 / 350 / 129
Регистрация: 01.02.2020
Сообщений: 1,039
Rudman132, у тебя рандомизированное заполнение. Можешь сказать, что уже сдвинул значения и никто не узнает правда ли это)
А вообще я писал метод для таких целей: Напишите программу, которая поворачивает данный массив целых чисел на одну позицию влево
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435

Сообщение было отмечено Rudman132 как решение
Решение
Сообщение от Rudman132 
сделать сдвиг значений во всех вложенных одномерных массивах
вправо на 1 позицию. Элементы, которые были в конце должны переместиться в начало.
1 2 3 4 5 6 7
int[] rotateRight(int[] a) { final int n = a.length; final int[] result = new int[n]; System.arraycopy(a, 0, result, 1, n - 1); result[0] = a[n - 1]; return result; }
In-place сдвиг будет домашним заданием.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как записать двумерный массив в виде матрицы?
Привет, форумчане,находил ответ на данный вопрос в разделе ВБА , но все они были с использованием.

Дан двумерный массив А(5,5) в виде квадратной матрицы
Дан двумерный массив А(5,5) в виде квадратной матрицы. Составьте программу, обнуляющую главную.
Дан двумерный массив А(М,М) в виде квадратной матрицы
Уважаемые программисты! Помогите с задачкой, очень нужно) Дан двумерный массив А(М,М) в виде.
Вывести в ListBox двумерный массив чисел в виде матрицы
Помогите пожалуйста вывести в ListBox двумерный массив чисел в виде матрицы. Только сегодня начал.

Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную диагональ матрицы, если в ней найдется хоть один отриц
Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную.

Создать двумерный массив и вывести его на печать в виде матрицы
Создать двумерный массив и вывести его на печать в виде матрицы.Выполнить задание: (i,j=1..4).
