Esempio ciclo for

  • Creatore Discussione Creatore Discussione syrmos
  • Data di inizio Data di inizio

syrmos

Nuovo Utente
7 Feb 2012
28
0
0
Innanzitutto salve a tutti del forum.:)
Sono con qualche settimana di java sulle quindi abbiate pazienza se vi tedierò con domande piu k banali...
Più cerco di entrar nello specifico studiando riga x riga la sintassi del codice e piu mi sembra di capirci ancora meno di quando ho cominciato...mah..
Comunque veniamo alla mia domanda: riguarda il ciclo for su un esempio k ho trovato su questo sito

class ProvaFor2 {
public static void main(String args[]) {
for (int i=0, j=2; i<10; i++, j++) {
System.out.println("i=" + i + " e j=" + j);
}
}
}

La domanda è molto banale ma se ho assegno 2 variabili xkè ho un solo valore come limite massimo?
 
La domanda è molto banale ma se ho assegno 2 variabili xkè ho un solo valore come limite massimo?

Ciao, benvenuto sul forum.

La domanda che hai fatto non ha una risposta specifica, ma dipende dal contesto.

Ci possono essere casi in cui hai due varibili da incrementare ma l'uscita del for dipende da solo una delle due: es ho una lista di N e una di N + X, con X > 0 e voglio stampare i primi N elementi delle liste usando j e i ma ovviamente non posso avere j maggiore di N.

Ci sono casi invece in cui voglio stampare N elementi di due liste, ma non so se la seconda lista ha più elementi della prima, quindi mi serve una condizione di uscita più complessa:

for(i = 0, j = 0; i < N && j < M; j++,i++){
...................
}

dove N e M sono le dimensioni delle liste.

Cmq in generale è molto difficile nella pratica avere bisogno di due variabili da incrementare (almeno io non le ho mai usate), perchè puoi fare le stesse cose con una sola.

Spero di esserti stato di aiuto.
 
Innanzitutto grazie x la risposta..
il problema però k essendo troppo fresco di java quando nell'esempio mi parli di liste purtroppo non le ho ancora affrontate,quindi provo a spiegarti alla mia maniera se ho capito:

es ho una lista di N e una di N + X, con X > 0 e voglio stampare i primi N elementi delle liste usando j e i ma ovviamente non posso avere j maggiore di N.
Quindi avrei potuto scrivere:
for (int i=0,J=0; i>n;i--,J--)

Riguardo invece all'esempio che ti avevo proposto:
Codice:
class ProvaFor2 {
public static void main(String args[]) {
for (int i=0, j=2; i<10; i++, j++) {
System.out.println("i=" + i + " e j=" + j);
}
}
}

La variabile "i" si confronta con il suo limite massimo (i<10) e se è vera "i" viene incrementato (e quindi stampato).
La variabile "j" invece con quale limite massimo si confronta dato che non è specificato?Presumo che il confronto avvenga con l'unico limite presente cioè "i<10", ma se così fosse non dovrebbe stampare solo 8 numeri visto che la variabile è inizializzata a due:
J=2
2<10
j++
j=3
3<10
j++
..
j=11
11<10???
j++??
 
for (int i=0,J=0; i>n;i--,J--)

le istruzioni del for non vengono mai eseguite perchè se n > 0 e i parte da 0 non entri nel for.

Per

class ProvaFor2 {
public static void main(String args[]) {
for (int i=0, j=2; i<10; i++, j++) {
System.out.println("i=" + i + " e j=" + j);
}
}
}


mi sa che non ti è chiaro come funziona il for....

Ci sono tre set di istruzioni separate da ; e sono

inizializzazione; condizione di uscita; azioni eseguite al termine del ciclo

quindi per il caso in questione

inizializzazione
i = 0;
j = 2;

giro 1
check uscita 0 < 10 -> si
eseguo istrizioni del for (in questo caso stampa)
i = 1;
j = 3;

giro 2
check uscita 1 < 10 -> si
eseguo istrizioni del for (in questo caso stampa)
i = 2;
j = 4;
............

giro 10
check uscita 9 < 10 -> si
eseguo istrizioni del for (in questo caso stampa)
i = 10;
j = 12;

giro 11
check uscita 10 < 10 -> no
uscita

Prova ad eseguirlo, se non ho fatto errori dovrebbe essere così
 
Quindi se non capito male nel ciclo for posso avere:
diversi parametri di inizializzazione;
una sola condizione di uscita a cui fanno riferimento i diversi parametri di inizializzazione;
diverse azioni eseguite al termine del ciclo quante sono i parametri iniziali.

Ho provato ad aggiungere un altro valore (nel mio caso "c") e funziona

Codice:
class conta {
public static void main(String args[]) {
for (int i=0, j=2, c=4; i<10; i++, j++,c++) {
System.out.println("i=" + i + "j=" + j +"c=" + c );
}
}
}

Chiaramente la condizione di uscita (sempre nel mio caso) è indifferente da chi viene inizializzata (se "i" "j" o "c").

Grazie
 

Discussioni simili