Перейти к содержимому

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

  • автор:

Как узнать длину и высоту двухмерного массива

В 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); 

Операции с многомерными массивами

Что такое многомерный массив?

Если элементом массива является другой массив, то такой массив называют многомерным:

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

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

Например:

Массив в виде таблицы

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

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

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