+1 a Daniel DiPaolo. Ho pensato di pubblicare una risposta separata per fornire un chiarimento su perché è il caso.
Mentre i loop in Java possono essere scritti in due modi. Se c'è solo una riga al corpo del ciclo, è possibile scrivere in modo breve a mano:
while (true)
System.out.println("While loop");
Questo stamperà "While" sulla console fino a quando il programma termina. L'altra opzione è quella di specificare un corpo del ciclo tra parentesi graffe, come avete fatto in precedenza:
int i = 0;
while (i < 10) {
System.out.println("i = " + i);
i++;
}
Questo stamperà "i = 0", "i = 1", ..., "i = 9" ciascuno su una linea separata.
Ciò che il codice che hai pubblicato confonde i due. Nel ciclo while, il parser Java si aspetta di trovare un'istruzione tra la condizione del ciclo while e il punto e virgola. Perché non trova una dichiarazione qui, il ciclo while viene eseguito, ma non fa nulla; non ha corpo Inoltre, poiché il ciclo non ha corpo, non vi è alcuna possibilità che la variabile r assuma un nuovo valore; la condizione è sempre valida e il loop non esce mai.
Se si dovesse negare la condizione nel ciclo while nel tuo esempio, vale a dire,
boolean r = false ; int s = 0 ;
while (r != false) ;
{
s = getInt() ;
if (!(s>=0 && s<=2)) System.out.println ("try again not a valid response") ;
else r = true ;
}
(notare ho lasciato il punto e virgola erronea in là), si potrebbe scoprire che il vostro corpo del ciclo destinato avrebbe eseguito con precisione una volta, poiché il ciclo non funzionerebbe mai.
Anche questo non è un ciclo infinito, quindi il tag 'infinite-loop' non ha senso. –
In realtà è un ciclo infinito. 'while (r == false);' è un ciclo infinito che non fa nulla, dal momento che r è inizializzato su false. –
Smetti di provare a mettere più cose su una linea. Più che altro, questo è ciò che ha causato il tuo problema. Una volta che hai l'abitudine di scrivere chiaramente, scoprirai che questo genere di cose accade molto meno. Imposta anche i tuoi avvisi in eclissi più in alto: dovrebbe aver indicato l'affermazione vuota. Non limitarti a risolvere questo problema, ma fissa le cause principali. –