2009-11-09 11 views

risposta

16

In primo luogo, Java tecnicamente non ha array bidimensionali: ha array di matrici. Quindi, in Java si può fare questo:

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

Il punto che voglio far passare è quanto sopra non è rettangolare (come una vera matrice 2D sarebbe).

Quindi, la vostra matrice di matrici, è per colonne, quindi righe o righe, quindi colonne? Se si tratta di righe, quindi colonne, è facile:

int rows = arr.length; 

(dall'esempio precedente).

Se l'array è colonne e quindi righe, hai un problema. Si può fare questo:

int rows = arr[0].length; 

ma questo potrebbe non riuscire per una serie di motivi:

  1. La matrice deve essere formato 0, nel qual caso si ottiene un'eccezione; e
  2. Si presume che la lunghezza del primo elemento dell'array sia il numero di righe. Questo non è necessariamente corretto come mostra l'esempio sopra.

Gli array sono uno strumento grezzo. Se vuoi un vero oggetto 2D ti consiglio caldamente di trovare o scrivere una classe che si comporta nel modo corretto.

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

Si digita più velocemente di quanto io :) – Xailor

+0

Shouldnt che essere semplicemente // numero di colonne ? –

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

Dipende da cosa si intende per "il numero di righe".

Per iniziare, un array bidimensionale è in realtà un array 1-D di array 1-D in Java. E non è necessario che un array 2-D sia effettivamente rettangolare o che tutti gli elementi nella prima dimensione vengano popolati.

  • Se si desidera trovare il numero di elementi nella prima dimensione, la risposta è semplicemente array.length.

  • Se si desidera trovare il numero di elementi nella seconda dimensione di un array 2D bidimensionale, la risposta è `array [0] .length.

  • Se si desidera trovare il numero di elementi nella seconda dimensione di una matrice 2D non rettangolare o sparsa, la risposta non è definita.

Problemi correlati