Un array bidimensionale si può definire e allocare con la sintassi:
tipoElementi[][] nomeMatrice = new tipoElementi[dim1][dim2];
ad esempio:
double[][] p = new double[10][20];
Possiamo immaginare che la prima dimensione indichi il numero di righe e la seconda il numero di colonne.
Il valore di p.length
sarà la lunghezza della prima dimensione (numero di righe), mentre
p[i].length
, dove i
è un qualsiasi valore lecito per il primo indice, indica la misura
della seconda dimensione (numero di colonne)
Nell'esempio riportato sopra, p.length
sarà pari a 10,
mentre p[0].length
sarà pari a 20.
Gli elementi dell'array bidimensionale saranno individuati dalla sintassi
..... p[espr1][espr2] ...
in cui espr1
ed espr2
sono due espressioni intere il cui valore, durante l'esecuzione del programma, dovrà necessariamente
essere compreso nei rispettivi intervalli di validità, pena il blocco del programma
con la nota ArrayIndexOutOfBoundsException
.
Quindi, il primo elemento della prima riga sarà p[0][0]
, e l'ultimo elemento dell'ultima riga sarà p[9][19]
.
Il seguente frammento di codice alloca un array bidimensionale di double
con 4 righe e 7 colonne,
e lo inizializza con valori casuali nell'intervallo [0,1).
double[][] mat = new double[4][7]; for(int i=0; i<mat.length; i++) { for(int j=0; j<mat[i].length; j++) { mat[i][j] = Math.random(); } }
Analogamente a quanto visto per gli array monodimensionali, un array bidimensionale può essere inizializzato contestualmente alla sua definizione come segue:
// in questo esempio l'array mat avrà 3 righe e 4 colonne int[][] mat = {{5, 3, 6, 12}, {1, 3, 3, 2}, {0, 0, 3, 14}};
Dato un array bidimensionale di int
(preferibilmente inizializzato nel codice), risolvere i problemi seguenti.
Dove specificato, si assume che la matrice sia quadrata.
Soluzione: MatriceVarie.java