Bucle anidado en Java (con ejemplos)

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 forbucle 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 forbucle dentro de otro forbucle.

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 forbucle dentro del whilebucle.

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 breakdeclaració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 forbucle 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 continuedeclaració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 continuedeclaració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 continuedeclaración ha afectado solo al bucle interno. El bucle exterior funciona sin problemas.

Articulos interesantes...