2014-04-12 15 views
5

La condizione nel ciclo for è vuota e il codice viene compilato e eseguito.Condizione ciclo vuoto

for(int i=0; ; i++) 
    System.out.print(i); //this code does not execute 
//code after this does not execute 

Ma, non capisco come e perché questo è possibile.

+0

È possibile fornire anche il contesto attorno al ciclo for? Stampa qualcosa se aggiungi 'System.out.print (" test ")' una riga prima del ciclo for? –

+0

Sei sicuro che quella parte sia stata eseguita? Dovrebbe essere eseguito per sempre ... –

+0

possibile duplicato di [Per il ciclo senza parametri in Java] (http: // stackoverflow.it/questions/6051869/for-loop-with-no-parameters-in-java) – thumbmunkeys

risposta

2

Se non stampa nulla, significa che non stai raggiungendo questo ciclo.
Se lo raggiungi, dovrebbe stampare tutti i numeri da 0 in su.
Questa è una stampa ad anello infinita 0, 1, 2, ...
Il tuo problema è altrove (probabilmente prima del ciclo for).

+0

Solo un chiarimento: la domanda iniziale era: perché questo ciclo non stampa nulla. –

2

Dopo aver testato questo in NetBeans va in questo modo:

mentre l'applicazione è in esecuzione: nessuna uscita

Quando l'applicazione è ferma: tutti i numeri vengono emessi nella console.

Quindi funziona, guarda riferimenti da altre risposte per sapere PERCHÉ funziona.

3

Basta cambiare sotto la linea, anche se non è un problema.

System.out.print(i); //this code does not seems execute by checking o/p on console but in reals it works as well. 

Per

System.out.println(i); //this code works and you will be able to see o/p on console. 

O

System.out.print(i+" "); // this will show you some momentary action on Eclipse console. 

Mi sembra come alcuni IDE Eclipse problema di stampa della console. Con la prima versione che hai menzionato nella tua domanda, non riesco a vedere alcun risultato. Poiché print() continua a stampare sulla stessa linea, potrebbe non essere visibile a noi.

Tuttavia, se si esegue il codice in modalità di debug e si inserisce un punto di interruzione nella riga precedente. Il punto di interruzione verrà colpito e sarà possibile vedere anche l'output stampato.

Ma per la seconda versione, posso vedere che la stampa di tutti i numeri a partire da 0,1 ...

Questa è una similar discussion come condiviso da @PakkuDon

+2

Questo mi sembra giusto. Penso che [questo collegamento] (http://stackoverflow.com/questions/10948983/system-out-print-doesnt-send-any-output-to-eclipse-console-why) potrebbe valere la pena di aggiungere al tuo post anche . – PakkuDon

+0

@PakkuDon aggiunto. Grazie!! – sakura

2

un ciclo for costrutto hanno tre cose Initialization , Condition e Increment/Decrements questi non sono campi obbligatori. Java eseguirà sempre il codice e non mostrerà un errore perché non abbiamo infranto alcuna regola di sintassi.

Qui for(i=0;;i++) System.out.println(i) verrà ancora eseguito e generato in ciclo infinito perché le condizioni vengono sempre considerate come parte facoltativa, quindi riposare altre due.

Pertanto, non saremo in grado di raggiungere il codice dopo l'istruzione System.out.println(i) poiché siamo bloccati in un ciclo infinito.

Problemi correlati