En este tutorial, aprenderemos sobre los bucles anidados en Java con la ayuda de ejemplos.
Si existe un bucle dentro del cuerpo de otro bucle, se denomina bucle anidado. A continuación, se muestra un ejemplo del for
bucle anidado .
// outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )
Aquí, estamos usando un for
bucle dentro de otro for
bucle.
Podemos usar el ciclo anidado para recorrer cada día de la semana durante 3 semanas.
En este caso, podemos crear un ciclo para iterar tres veces (3 semanas). Y, dentro del ciclo, podemos crear otro ciclo para iterar 7 veces (7 días).
Ejemplo 1: Java anidado para bucle
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop prints weeks for (int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop prints days for (int j = 1; j <= days; ++j) ( System.out.println(" Day: " + j); ) ) ) )
Salida
Semana: 1 Día: 1 Día: 2 Día: 3…. Semana: 2 Día: 1 Día: 2 Día: 3….….
En el ejemplo anterior, el ciclo externo se repite 3 veces e imprime 3 semanas. Y el ciclo interno se repite 7 veces e imprime los 7 días.
También podemos crear bucles anidados con while y do… while de forma similar.
Nota : es posible utilizar un tipo de bucle dentro del cuerpo de otro bucle. Por ejemplo, podemos poner un for
bucle dentro del while
bucle.
Ejemplo 2: bucle for de Java dentro del bucle while
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; int i = 1; // outer loop while (i <= weeks) ( System.out.println("Week: " + i); // inner loop for (int j = 1; j <= days; ++j) ( System.out.println(" Days: " + j); ) ++i; ) ) )
Salida :
Semana: 1 Día: 1 Día: 2 Día: 3…. Semana: 2 Día: 1 Día: 2 Día: 3….….
Aquí puede ver que la salida tanto del Ejemplo 1 como del Ejemplo 2 es la misma.
Ejemplo 3: bucles anidados de Java para crear un patrón
Podemos utilizar el bucle anidado en Java para crear patrones como pirámide completa, media pirámide, pirámide invertida, etc.
Aquí hay un programa para crear un patrón de media pirámide usando bucles anidados.
class Main ( public static void main(String() args) ( int rows = 5; // outer loop for (int i = 1; i <= rows; ++i) ( // inner loop to print the numbers for (int j = 1; j <= i; ++j) ( System.out.print(j + " "); ) System.out.println(""); ) ) )
Salida
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
Para obtener más información, visite el programa Java para imprimir pirámides y patrones.
romper y continuar Inside Nested Loops
Cuando usamos una break
declaración dentro del ciclo interno, termina el ciclo interno pero no el ciclo externo. Por ejemplo,
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // break inside the inner loop if(i == 2) ( break; ) System.out.println(" Days: " + j); ) ) ) )
Salida
Semana: 1 Día: 1 Día: 2…. Semana: 2 Semana: 3 Día: 1 Día: 2….….
En el ejemplo anterior, hemos utilizado la instrucción break dentro del for
bucle interno . Aquí, el programa salta el ciclo cuando i es 2 .
Por tanto, los días de la semana 2 no se imprimen. Sin embargo, el bucle exterior que imprime la semana no se ve afectado.
De manera similar, cuando usamos una continue
declaración dentro del ciclo interno, omite la iteración actual del ciclo interno solamente. El bucle exterior no se ve afectado. Por ejemplo,
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // continue inside the inner loop if(j % 2 != 0) ( continue; ) System.out.println(" Days: " + j); ) ) ) )
Salida
Semana: 1 Días: 2 Días: 4 Días: 6 Semana: 2 Días: 2 Días: 4 Días: 6 Semana: 3 Días: 2 Días: 4 Días: 6
En el ejemplo anterior, hemos utilizado la instrucción continue dentro del bucle for interno. Fíjate en el código
if(j % 2 != 0) ( continue; )
Aquí, la continue
declaración se ejecuta cuando el valor de j es impar. Por lo tanto, el programa solo imprime los días pares.
Podemos ver que la continue
declaración ha afectado solo al bucle interno. El bucle exterior funciona sin problemas.