For con ; all'inizio

di il
5 risposte

For con ; all'inizio

Ciao a tutti se scrivo questo codice:
int i=0,j=0;
for(; i<3 i++) {
    for(; j<5; j++) {
        System.out.print(i);
    }
}
io mi sarei apettato che stampasse:
000001111122222

invece stampa:
00000

come mai?

5 Risposte

  • Re: For con ; all'inizio

    Nella prima for manca un ; dopo il 3

    for(; i<3; i++) {
  • Re: For con ; all'inizio

    Si ,quello è un errore di battitura,anche se lo aggiungo il risultato non cambia,forse credo che quando j arriva a 5 non c'è nulla che possa farlo diventare di nuovo 0 quindi il ciclo più interno viene eseguito una sola volta.
    Qualcuno potrebbe confermare?
  • Re: For con ; all'inizio

    xneo ha scritto:


    si ,quello è un errore di battitura,anche se lo aggiungo il risultato non cambia,forse credo che quando j arriva a 5 non c'è nulla che possa farlo diventare di nuovo 0 quindi il ciclo più interno viene eseguito una sola volta.
    Qualcuno potrebbe confermare?
    Sì credo che tu abbia ragione: per risolvere puoi fare così:
    
    int i=0, j=0;
    for(; i<3; i++) {
        for(; j<5; j++) {
            System.out.print(i);
        }
        j=0;
    }
    
    cioè vai ad azzerare manualmente la variabile j all'uscita dal ciclo for più interno.
  • Re: For con ; all'inizio

    Ok,grazie, avevo pensato di fare così
  • Re: For con ; all'inizio

    xneo ha scritto:


    si ,quello è un errore di battitura,anche se lo aggiungo il risultato non cambia,forse credo che quando j arriva a 5 non c'è nulla che possa farlo diventare di nuovo 0 quindi il ciclo più interno viene eseguito una sola volta.
    Qualcuno potrebbe confermare?
    Si, il motivo è quello! Se dichiari la variabile j all'interno del for (ovvero for (int j=0; ...)) essa avrà la stessa vita del ciclo stesso. Per cui una volta che j arriva a 5 il ciclo termina e, con esso, anche la vita della variabile la quale verrà ricreata con valore uguale a zero alla successiva iterazione del ciclo esterno (quello con la "i").
Devi accedere o registrarti per scrivere nel forum
5 risposte