Per quanto riguarda il punto 2
nel main passi al costruttore ContaDati la lunghezza dell'array di stringhe che è il parametro del main.
Quell'array contiene le stringhe che tu scrivi quando lanci il programma.
Ad esempio:
se dal terminale scrivi
java InputDati
esegui il main contenuto nella classe InputDati, String[] args è vuoto e quindi args.length è uguale a 0;
se invece scrivi:
java InputDati pippo pluto paperino
String[] args conterrà le stringhe "pippo", "pluto" e "paperino" e quindi args.length è uguale a 3.
Ora se riferimento è uguale a args.lenght
ContaDati dati = new ContaDati (args.length);
public ContaDati (int r) {
riferimento=r;
}
e nel metodo somma scrivi
while(riferimento <= 0)
puoi far eseguire il codice del while solo se riferimento (e quindi args.length) è 0, riferimento non potrà mai assumere valori negativi.
Inoltre qual'ora riuscissi ad entrare, eseguirai solo una iterazione in quando riferimento viene incrementata di 1 e quindi a questo punto alla prossima verifica della condizione del while hai che 1>0 e quindi esci dal while.
Per il punto 3:
public int somma() {
int somma;
somma=riferimento;
while (riferimento <= magazzino){
System.out.println(riferimento);
riferimento++;
}
return somma;
}
analizziamo il codice.
Supponiamo che riferimento abbia un valore che chiamo x, quello che succede nel metodo è questo.
dichiaro la variabile somma e le assegno il valore x;
ora posso succedere due cose:
x è maggiore di zero, allora non entro nel while,
x è zero, allora riferimento viene incrementata di uno ed esco dal while.
restituisco il valore di somma.
Ma quanto vale somma? somma vale x che era il valore che aveva il riferimento in principio.