Подтвердить что ты не робот

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

Как мне задать вопрос о том, сколько строк у него есть 2-мерный массив?

4b9b3361

Ответ 1

Во-первых, Java технически не имеет 2-мерных массивов: он имеет массивы массивов. Поэтому в Java вы можете сделать это:

String arr[][] = new String[] {
  new String[3],
  new String[4],
  new String[5]
};

Точка, которую я хочу получить, - это не прямоугольная (как истинный 2D-массив).

Итак, ваш массив массивов, это столбцы, затем строки или строки, а затем столбцы? Если это строки, тогда столбцы легко:

int rows = arr.length;

(из приведенного выше примера).

Если ваш массив - это столбцы, тогда строки, то у вас есть проблема. Вы можете сделать это:

int rows = arr[0].length;

но это может потерпеть неудачу по ряду причин:

  • Массив должен быть размером 0, в этом случае вы получите исключение; и
  • Вы предполагаете, что длина первого элемента массива - это количество строк. Это не обязательно правильно, как показывает приведенный выше пример.

Массивы являются грубым инструментом. Если вам нужен настоящий 2D-объект, я настоятельно рекомендую вам найти или написать класс, который ведет себя корректно.

Ответ 2

Object[][] data = ...
System.out.println(data.length); // number of rows
System.out.println(data[0].length); // number of columns in first row

Ответ 3

int[][] ia = new int[5][6];
System.out.println(ia.length);
System.out.println(ia[0].length);

Ответ 4

Это зависит от того, что вы подразумеваете под "количеством строк".

Для начала 2-мерный массив на самом деле представляет собой 1-мерный массив 1-D массивов в Java. И нет требования, чтобы двухмерный массив был фактически прямоугольным, или даже, что все элементы в первом измерении заполнены.

  • Если вы хотите найти количество элементов в первом измерении, ответ будет просто array.length.

  • Если вы хотите найти число элементов во втором измерении прямоугольного двумерного массива, то ответ будет `array [0].length.

  • Если вы хотите найти количество элементов во втором измерении непрямоугольного или разреженного 2-D массива, ответ будет undefined.