+1 a Daniel DiPaolo. Pensé en publicar una respuesta por separado para proporcionar una aclaración de por qué este es el caso.
Mientras que los bucles en Java se pueden escribir en una de dos maneras. Si hay una sola línea al cuerpo del bucle, puede escribir ellos de una manera corta a mano:
while (true)
System.out.println("While loop");
Esto imprimirá "While" en la consola hasta que termine el programa. La otra opción es especificar un cuerpo bucle entre llaves, como se ha hecho anteriormente:
int i = 0;
while (i < 10) {
System.out.println("i = " + i);
i++;
}
Esto imprimirá "i = 0", "i = 1", ..., "i = 9" cada uno en una línea separada.
Lo que el código que publica hace es confundir a los dos. En el bucle while de short-hand, el analizador de Java espera encontrar una declaración entre la condición de bucle while y el punto y coma. Como no encuentra una instrucción aquí, el ciclo while se ejecuta, pero no hace nada; no tiene cuerpo Además, como el ciclo no tiene cuerpo, no hay oportunidad para que su variable r asuma un nuevo valor; la condición siempre se evalúa como verdadera y el bucle nunca sale.
Si se va a negar la condición en el bucle mientras que en el ejemplo, es decir,
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 ;
}
(tenga en cuenta que dejé el punto y coma errónea de allí), se verá que el cuerpo del ciclo previsto pueda ejecutar con precisión una vez, ya que el bucle nunca se ejecutará.
Además, este no es un bucle infinito, por lo que la etiqueta 'infinite-loop' no tiene sentido. –
En realidad, es un ciclo infinito. 'while (r == false);' es un bucle infinito que no hace nada, ya que r se inicializa a falso. –
Deja de intentar poner varias cosas en una línea. Más que nada, esto es lo que causó tu problema. Una vez que tenga el hábito de escribir con claridad, encontrará que este tipo de cosas sucede mucho menos. También configure sus advertencias en eclipse en un nivel superior: debería haberle indicado la declaración vacía. No solo resuelva este problema, solucione las causas raíz. –