Strano ciclo

di il
5 risposte

Strano ciclo

Perché in questo codice viene stampato anche il 10?? Non si dovrebbe fermare al 9??
public class Ciclo {
    public static void main(String args[]) {
        int i = 0;
        while (true) {
            i++;
            if((i%2) != 0)
            continue;
            System.out.println(i);
            if(i>=9)
            break;
        }
    }
}

5 Risposte

  • Re: Strano ciclo

    Allora nel ciclo fai:

    incrementa i;

    se i è dispari, prosegui all'iterazione successiva, saltando il resto del ciclo;

    stampa i;

    se i è maggiore o uguale a 9, esci dal ciclo.

    Quindi, quando fai i++, e i diventa 10, prima la stampi, e poi viene controllato se i è maggiore di 9

    quindi se non vuoi che venga visualizzato il 10, metti l if prima della stampa cosi:
    
    while (true) {
    
       i++;
                 
       if((i%2) != 0)
           continue;
                 
       if(i>=9)
            break;
               
       System.out.println(i);
    
    }
    
  • Re: Strano ciclo

    Ciao
    Ho un dubbio.... ma se si esce dal ciclo quando i è maggiore o uguale a 9, perché la i dovrebbe essere incrementata nuovamente??
  • Re: Strano ciclo

    Ha ragione Giuse90, infatti quando i vale 9, la prima condizione risulta soddisfatta pertanto viene eseguito il "contiunue" che fa terminare l'iterazione corrente senza preoccuparsi di verificare la seconda condizione (quella con il break), poi passa all'iterazione successiva dove i viene incrementato a 10, la prima condizione non risulta soddisfatta quindi stampa il 10, solo dopo viene verificata la seconda condizione eseguendo il break e terminando il ciclo.
  • Re: Strano ciclo

    Non so se Friz02 ha chiarito i dubbi di clari, in caso non l'avesse fatto..
    Nel codice postato da Friz02, la condizione per uscire dal ciclo (ovvero l'if), è messa dopo l'incremento la stampa della variabile i, di conseguenza,
    la i viene prima incrementata a 10,
    poi viene stampata
    e poi viene controllato se i è maggiore o uguale a 9.
    Semplicemente, per non far stampare il 10, l if va messo prima della stampa, come nel codice che ho postato io
    Spero di essere stato chiaro ciao
  • Re: Strano ciclo

    Chiarissimo !! grazie per il chiarimento ad entrambi!
Devi accedere o registrarti per scrivere nel forum
5 risposte