Capítulo 002 Ejercicio 017 (Break y Continue)

/** Dentro del cuerpo de cualquier sentencia de iteración también se puede controlar el flujo del bucle
* utilziando break y continue. Break sale del bucle sin ejecutar el resto de las sentencias del bucle.
* Continue detiene la ejecución de la iteración actual y vuelve al principio del bucle para comenzar la
* siguiente iteración.
**/

// Muestra el funcionamiento de las palabras clave "break" y "continue"
public class BreakyContinue{

public static void main(String args[]){

for(int i = 0; i < 100; i++){

if(i == 74)
break; // Sale del bucle for

if(i % 9 != 0)
continue; // Siguiente iteración

System.out.println(i);
}

int i = 0;
// Un "bucle infinito":
while(true){
i++;
int j = i * 27;

if(j == 1269)
break; // Sale del bucle

if(i % 10 != 0)
continue; // Parte superior del bucle

System.out.println(i);

}
}

}

/** En el bucle for el valor de "i" nunca llega a 100 porque la sentencia break rompe el bucle cuando "i"
* vale 74. Normalmente, el break sólo se utilizaría de esta manera si no se supiera cuándo va a darse la
* condición de terminación. La sentencia continue hace que la ejecución vuelva a la parte superior del
* bucle de iteración (incrementando por consiguiente la "i") siempre que "i" no sea totalmente divisible
* por 9. Cuando lo es, se imprime el valor.
*
* La segunda porción muestra un "bucle infinito" que debería, en teoría, continuar para siempre. Sin
* embargo, dentro del bucle hay una sentencia break que romperá el bucle y saldrá de él. Además se
* verá que la sentencia continue vuelve a la parte de arriba del bucle sin completar el resto.
*
* Por consiguiente la impresión se da en el segundo bucle sólo cuando el valor de "i" es divisible
* por 10.
*
* La salida es:
*
* --------------------Configuration: --------------------
* 0
* 9
* 18
* 27
* 36
* 45
* 54
* 63
* 72
* 10
* 20
* 30
* 40
*
* Process completed.
*
* El valor 0 se imprime porque 0 % 9 da 0.
*
* Una segunda forma de hacer un bucle infinito es escribir for(;;). El compilador trata tando a while(true),
* como a for(;;) de la misma manera, de forma que cualquiera que se use en cada caso, no es más que una
* cuestión de gusto.
*
**/