Ottenere la lunghezza della matrice bidimensionale

Come ottengo la seconda dimensione di un array se non lo conosco? array.length fornisce solo la prima dimensione.

Ad esempio, in

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

come otterrei il valore della seconda dimensione di nir , che è 3.

Grazie

quale 3?

Hai creato un array multi-dimensionale. nir è una matrice di int arrays; hai due array di lunghezza tre.

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

ti darebbe la lunghezza del tuo primo array.

Vale anche la pena notare che non è necessario inizializzare un array multidimensionale come è stato fatto, il che significa che tutti gli array non devono avere la stessa lunghezza (o esistere del tutto).

 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 

Tu puoi fare :

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

Ma sappi che non c’è un vero array bidimensionale in Java. Ogni matrice “primo livello” contiene un altro array. Ciascuno di questi array può essere di dimensioni diverse. nir[0].length non ha necessariamente la stessa dimensione di nir[1].length .

Puoi dare un’occhiata a http://anh.cs.luc.edu/170/notes/2dArrays/ar2.html che ha una buona immagine per dimostrarlo.

uso

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

guarda questo ciclo for che stampa il contenuto della matrice di 2 dimensioni il secondo ciclo itera sulla colonna di ogni riga

 for(int row =0 ; row < ntr.length; ++row) for(int column =0; column 

Ecco una soluzione completa su come enumerare gli elementi in una matrice bidimensionale frastagliata (con 3 righe e da 3 a 5 colonne):

  String row = ""; int[][] myArray = {{11, 12, 13}, {14, 15, 16, 17}, {18, 19, 20, 21, 22}}; for (int i=0; i 

Contenuti dell'array frastagliato

 int secondDimensionSize = nir[0].length; 

Ogni elemento della prima dimensione è in realtà un altro array con la lunghezza della seconda dimensione.

 nir[0].length 

Nota 0: devi avere almeno un array nell’array.
Nota 1: non tutti i sotto-array non sono necessari della stessa lunghezza.

Supponendo che la lunghezza sia la stessa per ogni matrice nella seconda dimensione, puoi usare

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

Ricorda, 2D array non è un 2D array in senso reale. Ogni elemento di un array in sé è un array, non necessariamente della stessa dimensione. quindi, nir[0].length può o non può essere uguale alla nir[2]length nir[1].length o nir[2]length .

Spero possa aiutare..:)

Espansione per lunghezza totale della matrice multidimensionale,

Generalmente per il tuo caso, dal momento che la forma della matrice 2D è “al quadrato”.

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

Tuttavia, per la matrice 2D, ogni riga potrebbe non avere lo stesso numero di elementi. Quindi dobbiamo attraversare ogni riga, aggiungere il numero di elementi.

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

Se array ND, il che significa che abbiamo bisogno del ciclo N-1 per ottenere le dimensioni di ogni riga.