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

Получение длины двумерного массива

Как получить второе измерение массива, если я этого не знаю? array.length дает только первое измерение.

Например, в

public class B {
    public static void main(String [] main){
        int [] [] nir = new int [2] [3];
        System.out.println(nir.length);
    }
}

как бы получить значение второго измерения nir, которое равно 3.

Спасибо

4b9b3361

Ответ 1

где 3?

Вы создали многомерный массив. nir - массив массивов int; у вас есть два массива длиной три.

System.out.println(nir[0].length); 

даст вам длину вашего первого массива.

Также стоит отметить, что вам не нужно инициализировать многомерный массив, как вы это делали, а это значит, что все массивы не должны быть одинаковой длины (или вообще существуют).

int nir[][] = new int[5][];
nir[0] = new int[5];
nir[1] = new int[3];
System.out.println(nir[0].length); // 5
System.out.println(nir[1].length); // 3
System.out.println(nir[2].length); // Null pointer exception

Ответ 2

Ты можешь сделать:

 System.out.println(nir[0].length);

Но учтите, что в Java нет реального двумерного массива. Каждый массив "первого уровня" содержит другой массив. Каждый из этих массивов может быть разных размеров. nir[0].length не обязательно совпадает с размером nir[1].length.

Ответ 3

использовать

   System.out.print( nir[0].length);

посмотрите на этот цикл, который печатает содержимое массива 2 измерений второй цикл повторяется по столбцу в каждой строке

for(int row =0 ; row < ntr.length; ++row)
 for(int column =0; column<ntr[row].length;++column)
    System.out.print(ntr[row][column]);

Ответ 4

int secondDimensionSize = nir[0].length;

Каждый элемент первого измерения фактически представляет собой другой массив с длиной второго измерения.

Ответ 5

Здесь представлено полное решение о том, как перечислять элементы в двумерном массиве без зубьев (с 3 строками и от 3 до 5 столбцов):

    String row = "";
    int[][] myArray = {{11, 12, 13}, {14, 15, 16, 17}, {18, 19, 20, 21, 22}};
    for (int i=0; i<myArray.length; i++) {
        row+="\n";
        for (int j = 0; j<myArray[i].length; j++) {
            row += myArray[i][j] + "  ";
        }
    }
    JOptionPane.showMessageDialog(null, "myArray contains:" + row);

Содержимое массива Jagged

Ответ 6

В последней версии JAVA вот как вы это делаете:

nir.length //is the first dimension
nir[0].length //is the second dimension

Ответ 7

nir[0].length

Примечание 0: в вашем массиве должен быть минимум один массив.
Примечание 1: Не все подмассивы не нужны одинаковой длины.

Ответ 8

Предполагая, что длина одинакова для каждого массива во втором измерении, вы можете использовать

public class B {    
 public static void main(String [] main){
    int [] [] nir= new int [2] [3];
    System.out.println(nir[0].length);
 }
}

Ответ 9

Помните, что 2D array не является 2D array в реальном смысле. Каждый элемент массива сам по себе является массивом, не обязательно такого же размера.  поэтому nir[0].length может быть или не быть равно nir[1].length или nir[2]length.

Надеюсь, что поможет..:)

Ответ 10

Расширение для общей длины многомерного массива,

Как правило, для вашего случая, так как форма 2D-массива "квадрат".

int length = nir.length * nir[0].length;

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

int length = 0;
for ( int lvl = 0; lvl < _levels.length; lvl++ )
{
    length += _levels[ lvl ].length;
}

Если массив N-D, что означает, что нам нужен N-1 для цикла, чтобы получить размер каждой строки.