Двумерные массивы в 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 →
Как создать двумерный массив в 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
Крайне рекомендую хотя бы переписать код(Не ctrl+C -> ctrl+V, а ручками), где создается шахматное поле, до прочтения статьи не было совсем ясно, как класть разные буквы и цифры в нужные ячейки массива. Спасибо за открытие этого метода:
Character.toString(letters.charAt(a))
Про перемножение матриц и задачи с многомерными массивами, пока не понял, но в закладки добавил Уже выработалось понимание, «Если в этот раз непонятно, то просто прочти до конца, а потом посмотри на это под другим углом» Когда-то я не понимал самих массивов
Владислав Уровень 16
26 февраля 2023
перемножение матриц бошку вынесло, когда попытался представить написанный код)) короче если мне попадется такая задача, я сначало залезу в википедию, чтобы лучше понять) И это при условии, что я сдавал линейную алгебру в универе, прошло с тех пор 15 лет — я забыл 90%!
18 февраля 2023
Пришлось вспоминать как работают матрицы. А ведь я и подумать не мог, что после экзамена ещё хоть раз в жизни их увижу. Кстати, спасибо за пример с парковкой
Kergshi Уровень 16
9 февраля 2023
Если у кого возникнет вопрос в примере вывода шахматной доски с с нумерацией ячеек,да! Вы правильно подумали,да,можно выбросить к черту повтор 2-х циклов ,а выводы сразу первых двух писать и будет работать точно также. Конечно,может я еще глуп и эта абра-кадабра с повторением одного и того же имеет смысл,но так как объяснения этому нет,то я «лишнее» выкинул и всё так же в итоге осталось по работоспособности.
Kergshi Уровень 16
9 февраля 2023
Просвятите,пожалуйста,почему второй пример с доской,если скопировать, не работает в идее,выдаёт 15 ошибок. Циклы for вообще за циклы не воспринимает.
Kergshi Уровень 16
25 января 2023
Да как разобраться во всей это куче ссылок. Идешь просто по курсу и тут на тебе,100500 ссылок почить то,почитать это. А там еще штук пять. Тут просто массивы,там «кое-что о массивах»,»массивы в Java». С ума сойти можно
Kirill Уровень 20
25 декабря 2022
Как раз ищу ответ на это высказывание: «Если мы имеем дело с прямоугольными двумерными массивами (то есть такими, у которых все строки одинаковой длины), то можно применить операцию twoDimArray[0].length или вместо нулевого элемента (по сути — нулевой строки) — любой другой существующий. Мы можем так поступить, потому что в Java двумерный массив — это массив массивов, и нулевой элемент twoDimArray[0] — это массив длины 4. Можете проверить это самостоятельно.» Что они имеют ввиду? Не вижу связи. Почему 0, а не [I]? Подскажите!
Олег Уровень 100 Expert
12 декабря 2022
Здравствуйте. Похоже в строке a[1][0]*b[0][0] + a[1][1]*b[0][1] + … + a[0][m-1]*b[m-1][0] ошибка.
Denis Odesskiy Уровень 29
11 декабря 2022
Здравствуйте! Не могу понять зачем в листинге с примером про шахматную доску перед выводом результата в консоль повторен этот цикл:
for (int i = 0; i < chessBoard.length; i++) < for (int j = 0; j < chessBoard[0].length; j++)
С ним у меня пример не работает, а без него работает, это опечатка? Или в чем моя ошибка? Вот мой листинг кода без этого цикла:
public class CheessBoard < public static String cheessBoardCoord(int a, int b) < String letters = "abcdefgh"; String numbers = "87654321"; if ((a >7) || (b > 7)) return null; //если номер за пределами доски, возвращаем значение по умолчанию - null else return (Character.toString(letters.charAt(a)) + numbers.charAt(b)); /*charAt - метод, с помощью которого мы извлекаем из строки элемент под переданным номером, здесь - под номерами a и b. Character.toString - метод, который переводит полученный символ в строку*/ > public static void main(String[] args) < //задаём шахматную доску двумерным массивом String[][] cheessBoard = new String[8][8]; for (int i = 0; i < cheessBoard.length; i++) < for (int j = 0; j < cheessBoard[0].length; j++) < if ((i + j) % 2 == 0) cheessBoard[i][j] = "W" + cheessBoardCoord(j, i); else cheessBoard[i][j] = "B" + cheessBoardCoord(j, i); System.out.print(" " + cheessBoard[i][j] + " "); >System.out.println(); > > >
В примере с умножением матриц ошибка, - не объявлен тип переменной k:
for (k=0; k
Объявить и инициализировать двумерные массивы в Java
В этом посте мы обсудим, как объявлять и инициализировать двумерные массивы в Java.
В Java существует несколько способов объявления и инициализации двумерных массивов, которые представляют собой массивы массивов, которые могут хранить данные в табличной форме. Вот несколько возможных методов:
1. Использование инициализатора массива
Мы можем использовать фигурные скобки <> объявить и инициализировать двумерный массив нужными нам значениями. Мы можем использовать вложенные фигурные скобки для указания строк и столбцов массива. Например:
import java . util . Arrays ;
public class Main <
public static void main ( String [ ] args ) <
// объявляем и инициализируем двумерный массив целых чисел
int [ ] [ ] arr =
// [[1, 2, 3], [4, 3, 6], [7, 8, 9]]
System . out . println ( Arrays . deepToString ( arr ) ) ;
Мы также можем инициализировать столбцы разной длины с помощью инициализатора массива. Это приведет к зубчатый массив, который представляет собой массив, элементы которого являются массивами разных размеров и размеров. Например, следующий код объявляет и инициализирует двумерный массив разных размеров для каждой строки.
import java . util . Arrays ;
public class Main <
public static void main ( String [ ] args ) <
// объявляем и инициализируем неровный массив целых чисел
int [ ] [ ] arr =
// [[1], [1, 2], [1, 2, 3]]
System . out . println ( Arrays . deepToString ( arr ) ) ;
2. Использование new оператор
Мы также можем использовать new оператор для объявления и инициализации двумерного массива указанного размера. Мы можем присвоить размерность массива, используя индексную запись. [row][column] . Мы можем либо разделить объявление и инициализацию двумерных массивов, либо объединить их в одну строку. Например:
import java . util . Arrays ;
public class Main <
public static void main ( String [ ] args ) <
int [ ] [ ] arr1 ; // объявить массив
arr1 = new int [ 3 ] [ 4 ] ; // выделить память
// [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
System . out . println ( Arrays . deepToString ( arr1 ) ) ;
// объединяем оба в одну строку
int [ ] [ ] arr2 = new int [ 3 ] [ 4 ] ;
// [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
System . out . println ( Arrays . deepToString ( arr2 ) ) ;
Поскольку мы не предоставили никакого инициализатора, значение по умолчанию 0 присваивается каждому элементу в случае int или же long или же short или же byte множество. Значение по умолчанию: null для струн и 0.0 за double или же float . Обратите внимание, что второе измерение в двумерном массиве не является обязательным. Мы можем объявить двумерный массив, указав только первое измерение. Однако мы должны указать первое измерение, иначе компилятор выдаст ошибку компиляции.
