Corso di Java

Lavorare con gli array - Parte II

 

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