Interrumpir un bucle

All lectures for ES purposes
Nivel 1 , Lección 1081
Disponible

"¡Hola, amigo!

"Hola, Ellie".

"Ya has estudiado bucles, y eso es genial".

"¡Estoy de acuerdo! Ahora no sé cómo vivir sin ellos".

"A veces puedes prescindir de ellos... Pero más a menudo los necesitarás. Hoy vamos a hablar sobre la situación en la que necesitas salir de un bucle antes de lo previsto".

"¿Quiere decir, cuando la condición para continuar el ciclo es verdadera, pero aún necesita salir del ciclo?"

"¡Exactamente! A veces suenas como si ya fueras un programador. De todos modos, para salir de un bucle antes de lo previsto, puedes usar la instrucción break . Echa un vistazo al siguiente ejemplo:

Código Explicación
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
El programa leerá una línea del teclado, hasta que ingreses "exit".

"Ya veo. El programa lee líneas de la consola. Si ingresa "exit", la isExitvariable se convierte en true, la condición del ciclo será y el ciclo finalizará".!isExitfalse

"Así es. Entonces, Java tiene una breakdeclaración especial que le permite simplificar dicha lógica. Si una breakdeclaración se ejecuta dentro de un ciclo, entonces el ciclo termina inmediatamente. El programa comenzará a ejecutar la declaración que sigue al ciclo. La declaración es muy breve :

break;

"Así es como puede usar la breakdeclaración para reescribir el ejemplo que acabamos de discutir:

Código Explicación
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
El programa leerá una línea del teclado, hasta que ingreses "exit".

"Tal vez lo recordaré. Siento que será útil".

"Pero breakno es la única declaración de Java que le permite controlar el comportamiento de un ciclo. Java también tiene la continuedeclaración. Si ejecuta una continuedeclaración dentro de un ciclo, la iteración actual del ciclo terminará antes de lo previsto".

"¿Qué quieres decir con iteración?"

"Una iteración de ciclo es una ejecución del cuerpo del ciclo. La continuedeclaración interrumpe la iteración actual del ciclo, pero a diferencia de la breakdeclaración, no finaliza el ciclo en sí. La declaración también es breve:

continue;

"Entonces, ¿la continuedeclaración se puede usar en un ciclo si queremos 'omitir' la ejecución de ciertas iteraciones del ciclo?"

"Exactamente. ¿Entiendes la diferencia entre breaky continue? Si necesitas encontrar un siete entre 20 dígitos que no se repiten, ¿qué tipo de declaración de bucle e interrupción de bucle usarías?

"Hmm... Repasaría todos los números, y si encuentro 7, entonces ejecutaría un break."

"¿Qué pasa si necesita mostrar números de 1a 20excepto números que son divisibles por 7?"

"Bueno, aquí probablemente necesito continue, ya que no quiero salir del bucle. Pero todavía no entiendo del todo".

"Déjame mostrarte cómo resolver este problema. Este es el aspecto que podría tener este código".

Código Explicación
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
El programa muestra números desde 1hasta 20. Si el número es divisible por 7(el resto de la división por 7es 0 ), omitiremos mostrar el número.

"¿Por qué me miras con tanta sospecha, Ellie? ¿Hay alguna trampa aquí?"

"¡No te dejes engañar, Amigo! De hecho, este código no funcionará correctamente . Mostrará los primeros 6 dígitos, y luego ipermanecerá atascado para siempre en el número 7. Después de todo, la continuedeclaración salta otras dos declaraciones: System.out.println(i)y i++. Como como resultado, una vez que alcancemos el valor 7, la variable idejará de cambiar y estaremos en un ciclo infinito. Escribí el código de esta manera a propósito para ilustrar un error muy común".

"¿Cómo lo arreglamos?"

"Aquí hay dos opciones:"

Opción 1: cambiar iantes de ejecutar continue, pero despuési % 7

Opción 2: incrementar siempre ial principio del ciclo. Pero entonces iel valor inicial debe ser 0.

Opción 1 opcion 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

"¡Excelente! Trataré de no cometer este error".

"¡Recordaré tu promesa!"

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION