it-swarm.it

Ottenere la lunghezza dell'array bidimensionale

Come posso ottenere 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

51
Numerator

quale 3?

Hai creato un array multidimensionale. nir è un array di array int; hai due matrici 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 in precedenza, il che significa che tutti gli array non devono avere la stessa lunghezza (o esistere affatto).

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
97
Brian Roach

Tu puoi fare :

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

Ma tieni presente che non esiste un vero array bidimensionale in Java. Ogni array di "primo livello" contiene un altro array. Ognuno di questi array può avere dimensioni diverse. nir[0].length non ha necessariamente le stesse dimensioni di nir[1].length.

9
krtek

uso

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

guarda questo per il ciclo che stampa il contenuto della matrice di 2 dimensioni mentre il secondo ciclo scorre sulla colonna di ogni riga

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

Ecco una soluzione completa su come enumerare gli elementi in un array frastagliato bidimensionale (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<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 array's contents

3
int secondDimensionSize = nir[0].length;

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

3
dlev

Nell'ultima versione di Java questo è il modo in cui lo fai:

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

Nota 0: è necessario disporre di almeno un array nell'array.
Nota 1: non tutti i sotto-array non sono necessari della stessa lunghezza.

1

Supponendo che la lunghezza sia la stessa per ciascun array nella seconda dimensione, è possibile utilizzare

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

Espansione per la lunghezza totale dell'array multidimensionale,

Generalmente per il tuo caso, poiché la forma dell'array 2D è "quadrata".

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

Tuttavia, per l'array 2D, ogni riga potrebbe non avere lo stesso numero esatto di elementi. Pertanto dobbiamo attraversare ogni riga, aggiungere il numero di elementi in alto.

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

Se array N-D, ciò significa che abbiamo bisogno di N-1 per il loop per ottenere le dimensioni di ogni riga.

0
user3504090

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

Spero che sia d'aiuto..:)

0
Shambhavi