Nella scorsa lezione abbiamo visto che è possibile creare array di array
e non necessariamente i sub-array devono avere la stessa dimensione.
Oltre a ciò Java fornisce un’altra possibilità: quella di
inizializzare in un secondo momento i sub-array.
Esaminiamo il seguente programma:
/*
* File SubArray.java
*/
public class SubArray {
public static void main(String[] args)
{
int[][] unaMatrice = new int[4][];
// Riempimento della matrice
for (int i = 0; i < unaMatrice.length; i++)
{
unaMatrice[i] = new int[5];
// crea i sub-array
for (int j = 0; j < unaMatrice[i].length; j++)
unaMatrice[i][j] = i + j;
}
// Stampa la matrice
for (int i = 0; i < unaMatrice.length; i++)
{
for (int j = 0; j < unaMatrice[i].length; j++)
System.out.print(unaMatrice[i][j] + " ");
System.out.println();
}
}
}
Nella dichiarazione dell’array unaMatrice, indichiamo
solo la dimensione principale dell’array, lasciando non
specificata la dimensione dei sub-array, che Java ci permette
di indicare nel successivo ciclo for.
Il for annidato scrive il contenuto di ogni elemento
dell’array con la somma dei valori dei vertici di ogni elemento,
che viene stampato nel ciclo successivo.
Notiamo quanto il ciclo for sia un costrutto utilissimo
per scandire gli array; infatti, sebbene ciò possa essere fatto
benissimo anche con while e do-while, tuttavia il
for offre una soluzione più agevole e immediata.
Nel codice d’esempio, le righe:
/*
* File SubArray.java
*/
…
// Riempimento della matrice
…
// crea i sub-array
…
// Stampa la matrice
sono dei commenti.
I commenti sono degli strumenti utilissimi che consentono
di aumentare la leggibilità di un programma, grazie alla possibilità
di inserirvi delle informazioni ad esclusivo vantaggio di coloro
che dovranno cercare di capire come lavora il codice sorgente.
Il compilatore Java ignora completamente le informazioni incluse
nei commenti, per cui si ha massima libertà nella loro scrittura.
Per conoscere i vari tipi di commenti offerti da Java, nonché
le convenzioni stabilite dagli sviluppatori di Sun Microsystems
per la loro scrittura, trovate un’ampia discussione nelle
lezioni 3 e 4 del corso
“Specifiche Sun” su Software Planet.
A questo punto, ritornando ad esaminare la ben nota segnatura
del metodo main():
public static void main (String args[])
ci accorgiamo che esso riceve come argomento un array di oggetti
String.
Ma da chi riceve questo argomento?
Poiché un’applicazione Java è un programma autonomo, è spesso
utile passargli degli argomenti e delle opzioni, ad es. per indicare
un file da caricare o per specificare una particolare modalità
operativa durante l’esecuzione.
La modalità con la quale si possono passare argomenti ad un’applicazione
Java dipende dalla piattaforma sulla quale esso viene eseguito.
In ambiente Windows e Unix questi argomenti possono essere passati
dalla riga di comando, semplicemente aggiungendoli al nome del
programma quando si invoca la sua esecuzione:
java MioProgramma primo argomento 2
In questo caso al programma MioProgramma sono passati tre
argomenti, primo, argomento e 2, separati
da semplici spazi.
Se si vogliono utilizzare argomenti contenenti degli spazi, occorre
racchiuderli tra doppi apici, ad es.:
java MioProgramma “Primo Argomento” 2
In questo modo l’applicazione riceve due parametri, ”Primo
Argomento” e 2, e i doppi apici, che non vengono passati
all’applicazione come facenti parte dell’argomento
che li contiene, consentono di non separare le due parole di cui
è costituito il primo argomento.
Gli argomenti passati al programma vengono memorizzati come oggetti
di tipo String nell’array args, in modo che
l’applicazione li possa gestire internamente secondo i propri
scopi.
L’esempio seguente stampa in sequenza, se ci sono, gli argomenti
che gli sono passati:
/*
* File StampaArgs.java
*/
class StampaArgs
{
public static void main(String argomenti[])
{
System.out.println("Argomenti ricevuti:");
if (argomenti.length == 0)
System.out.println("Nessuno");
else
for (int i = 0; i < argomenti.length; ++i)
System.out.println("Argomento " + i
+": " + argomenti[i]);
}
}
Notiamo che si può scegliere un nome qualsiasi per l’array
che conterrà gli argomenti.
Torna all'indice Generale del corso di Corso di Java di Software Planet