Chiarimenti su "void main(String[] args)"

di il
4 risposte

Chiarimenti su "void main(String[] args)"

Scusate l'ignoranza, ma la situazione è critica.....
Vi riporto un pezzo di programma; se qualcuno gentilmente può illuminarmi mi fa un immenso favore. Scusate anticipatamente se magari chiedo cose banali ma davvero ho bisogno del vostro aiuto. I concetti base li ho però a volte trovo cose che capisco a metà come l'esempio sotto.

Due domande:

1) Alla riga 8 chiede una stringa come argomento e poi alla riga 9 viene dato "i" e "DEFPORTA"?
2) Mi potreste spiegare dalla riga 18 alla 23?

1   public class InterfUtente{
2   private static String DEFINDIR="localhost";
3   private static int DEFPORTA=2000;
4
5      public InterfUtente(){
6      this(DEFINDIR,DEFPORTA);
7      }
8      public InterfUtente(String i){
9      this(i,DEFPORTA);
10     }
11     public InterfUtente(String i, int p){
12     indir=i;
13     porta=p;
14     }
15
16     public static void main(String[] args){
17     InterfUtente iu;
18     switch(args.lenght){
19     case 0: iu=new InterfUtente(); break;
20     case 1: iu=new InterfUtente(args[0]); break;
21     case 2: iu=new InterfUtente(args[0], Integer.parseInt(args[1]));break;
22     default: System.out.println("Uso: java InterfUtente" + "<indirizzoserver> <porta>");
23     return
24     }
25     iu.altrafunzione();
26     }
27  }

4 Risposte

  • Re: Chiarimenti su "void main(String[] args)"

    1) praticamente la tua classe permette la costruzione di un oggetto tramite la conoscenza di due parametri (nome host e numero di porta). Questi parametri, però, possono avere valori di default, per cui viene resa possibile la creazione di un oggetto anche utilizzando i valori sottintesi. Nel tuo caso il costruttore con 1 argomento richiama al suo interno il costruttore con 2 argomenti, passandogli il nome host immesso dall'utente e la porta di default.

    2) si tratta dello "switch statement", e può essere utilizzato in sostituzione di una serie di "if..else...else..". In pratica il tuo codice equivale a:
    
    if (args.lenght == 0) {
       iu = new InterfUtente();
    } else if (args.lenght == 1) {
       iu = new InterfUtente(args[0]);
    } else if (args.lenght == 2){
       iu ) new InterfUtente(args[0], Integer.parseInt(args[1]));
    } else {
       System.out.println("...");
       return;
    }
    
    Lo switch statement può essere utilizzato con variabili di tipo char, byte, short e int.
  • Re: Chiarimenti su "void main(String[] args)"

    1) Ok, diciamo che una vaga idea di questo ce l'avevo anche se mi sembra un modo per incasinare e basta.....

    2) Il ciclo lo capisco, quello che non capisco (non c'ho mai lavorato su args) è cosa fa su args: ne valuta le dimensioni a seconda che siano 0,1,2.....
  • Re: Chiarimenti su "void main(String[] args)"

    1) In realtà è comodo, serve per riusare il codice!

    2) Esatto, valuta la dimensione di args (ovvero il numero di parametri che l'utente passa all'avvio del programma) e sulla base di questa dimensione fa scelte diverse (collegate coi diversi costruttori della tua classe).
  • Re: Chiarimenti su "void main(String[] args)"

    Ah, non era difficile. Ora mi sembra già più chiaro.
    Ti ho scritto un MP, non so se lo ha inviato......
    Grazie ancora.

    Scusate tutti per l'off-topic.....
Devi accedere o registrarti per scrivere nel forum
4 risposte