Как узнать длину и высоту двухмерного массива
В Java n- мерный массив это массив где каждый элемент тоже является массивом, который тоже является массивом и т.д. до n. причем размерность каждого внутреннего массива может быть разной. Чтобы узнать размерность массива достаточно обратиться к его полю length. Вот пример работы с массивами:
int[][] a = new int[3][5]; // прямоугольный массив
int size1 = a.length;
int size2 = a[0].length;
int[][] b = new int[3][]; //массив переменной длины — в данном случае треугольный
b[0] = new int[1];
b[1] = new int[2];
b[2] = new int[3];
Как определить число «строк», «колонок» в 2d массиве
То есть в метод передается допустим int[4][5] i Хотелось бы элегантно, без циклов определить число «строк», «колонок» в двумерном массиве. Со строками понятно i.length отдаст 4, а вот колонки как?
Отслеживать
задан 17 июн 2015 в 12:03
Uladzimir Kordzik Uladzimir Kordzik
117 1 1 золотой знак 1 1 серебряный знак 7 7 бронзовых знаков
Все-таки есть смысл проверить на null и также на размер — а вдруг там и нулевого элемента тоже нет.
17 июн 2015 в 12:24
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Если гарантируется, что все «строки» одинаковой длины и в массиве есть хотя бы одна «строка»:
int rows = a.length; int columns = a[0].length;
Без соблюдения этих условий — никак.
Отслеживать
ответ дан 17 июн 2015 в 12:11
25.1k 4 4 золотых знака 46 46 серебряных знаков 81 81 бронзовый знак
Если в каждом столбце заданного двумерного массива равное количество элементов, то можно просто воспользоваться:
i[0].length;
Но если есть вероятность, что в разных столбцах может быть разное количество элементов, то для определения максимального количества строк можно пробежаться по каждом столбцу по отдельности:
int maxRow = 0; for (int j = 0; j < i.length; j++) < if (maxRow < i[j].length) < maxRow = i[j].length; >>
4.3. Java примеры – Как узнать размер двумерного массива
Следующий пример помогает определить размер двумерного массива с использованием arrayname.length.
public class Main < public static void main(String args[]) < String[][] data = new String[2][5]; System.out.println("Измерение 1: " + data.length); System.out.println("Измерение 2: " + data[0].length); >>
Результат
Вышеприведенный пример кода даст следующий результат:
Измерение 1: 2 Измерение 2: 5
Оглавление
- 1. Java примеры – Использование кода на практике
- 2. Java примеры – Окружающая среда
- 2.1. Java примеры – Скомпилировать файл
- 2.2. Java примеры – Установить путь к нескольким классам
- 2.3. Java примеры – Отладка java-файла
- 2.4. Java примеры – Установить путь к классу
- 2.5. Java примеры – Просмотреть текущий путь класса
- 2.6. Java примеры – Установить назначение файла класса
- 2.7. Java примеры – Запустить скомпилированный java-файл класса
- 2.8. Java примеры – Узнать версию Java
- 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
- 3. Java примеры – Строки
- 3.1. Java примеры – Сравнить две строки
- 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
- 3.3. Java примеры – Удалить нужный символ из строки
- 3.4. Java примеры – Заменить символ в строке
- 3.5. Java примеры – Вывод в обратном порядке
- 3.6. Java примеры – Нахождение символа или слова в строке
- 3.7. Java примеры – Разбиение строки на слова и символы
- 3.8. Java примеры – Преобразование строки в верхний регистр
- 3.9. Java примеры – Найти слово в строке
- 3.10. Java примеры – Сравнить производительность создания строки
- 3.11. Java примеры – Оптимизировать создание строк
- 3.12. Java примеры – Форматирование строк
- 3.13. Java примеры – Конкатенация строк
- 3.14. Java примеры – Определить код Юникода символа в строке
- 3.15. Java примеры – Буферизация строк
- 4. Java примеры – Массивы
- 4.1. Java примеры – Сортировка массива и поиск элемента
- 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
- 4.3. Java примеры – Размер двумерного массива
- 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
- 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
- 4.6. Java примеры – Найти максимальный и минимальный элемент массива
- 4.7. Java примеры – Соединить два массива в один
- 4.8. Java примеры – Как заполнить массив числами
- 4.9. Java примеры – Увеличить массив после инициализации
- 4.10. Java примеры – Сравнение двух массивов
- 4.11. Java примеры – Удаление элемента из массива
- 4.12. Java примеры – Удаление массива из другого массива
- 4.13. Java примеры – Одинаковые элементы массивов
- 4.14. Java примеры – Поиск в массиве
- 4.15. Java примеры – Равенство двух массивов
- 4.16. Java примеры – Сравнить массивы
- 5. Java примеры – Дата и время
- 5.1. Java примеры – Форматирование времени в формате AM-PM
- 5.2. Java примеры – Получение названия и номера текущего месяца
- 5.3. Java примеры – Получить текущее время в часах и минутах
- 5.4. Java примеры – Вывести текущее время и дату
- 5.5. Java примеры – Вывести текущее время в 24-часовом формате
- 5.6. Java примеры – Получить текущий месяц
- 5.7. Java примеры – Получить текущие секунды
- 5.8. Java примеры – Получить короткое название месяца
- 5.9. Java примеры – Получить день недели
- 5.10. Java примеры – Добавление времени к дате
- 5.11. Java примеры – Отображение времени в формате другой страны
- 5.12. Java примеры – Отображение времени на разных языках
- 5.13. Java примеры – Прокрутить часы и месяцы
- 5.14. Java примеры – Получить номер недели и месяц в году
- 5.15. Java примеры – Форматы текущей даты
- 6. Java примеры – Методы
- 6.1. Java примеры – Перезагрузка методов
- 6.2. Java примеры – Вывод массива с использованием метода
- 6.3. Java примеры – Решение Ханойской башни
- 6.4. Java примеры – Последовательность чисел Фибоначчи
- 6.5. Java примеры – Вычисление факториала числа
- 6.6. Java примеры – Переопределение метода
- 6.7. Java примеры – Вывод массива с использованием метода
- 6.8. Java примеры – Использование оператора break
- 6.9. Java примеры – Использование оператора continue
- 6.10. Java примеры – Использование метки в методе
- 6.11. Java примеры – Использование операторов enum и switch
- 6.12. Java примеры – Использование конструктора enum
Операции с массивами

Значение, которое распечатывается с помощью 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(); //перенос для табличного вида
> // завершён вывод столбца