Loop aninhado em Java (com exemplos)

Neste tutorial, aprenderemos sobre loops aninhados em Java com a ajuda de exemplos.

Se um loop existe dentro do corpo de outro loop, é chamado de loop aninhado. Aqui está um exemplo do forloop aninhado .

 // outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )

Aqui, estamos usando um forloop dentro de outro forloop.

Podemos usar o loop aninhado para iterar em cada dia da semana por 3 semanas.

Nesse caso, podemos criar um loop para iterar três vezes (3 semanas). E, dentro do loop, podemos criar outro loop para iterar 7 vezes (7 dias).

Exemplo 1: Java Nested for Loop

 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); ) ) ) )

Resultado

Semana: 1 Dia: 1 Dia: 2 Dia: 3…. Semana: 2 Dias: 1 Dia: 2 Dia: 3….….

No exemplo acima, o loop externo itera 3 vezes e imprime 3 semanas. E o loop interno itera 7 vezes e imprime os 7 dias.

Também podemos criar loops aninhados com while e do … while de maneira semelhante.

Nota : É possível usar um tipo de loop dentro do corpo de outro loop. Por exemplo, podemos colocar um forloop dentro do whileloop.

Exemplo 2: Java for loop dentro do loop 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; ) ) )

Produto :

Semana: 1 Dia: 1 Dia: 2 Dia: 3…. Semana: 2 Dias: 1 Dia: 2 Dia: 3….….

Aqui você pode ver que a saída do Exemplo 1 e do Exemplo 2 é a mesma.

Exemplo 3: loops Java aninhados para criar um padrão

Podemos usar o loop aninhado em Java para criar padrões como pirâmide completa, meia pirâmide, pirâmide invertida e assim por diante.

Aqui está um programa para criar um padrão de meia pirâmide usando loops aninhados.

 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(""); ) ) )

Resultado

 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5

Para saber mais, visite o programa Java para imprimir pirâmides e padrões.

interromper e continuar dentro de loops aninhados

Quando usamos uma breakinstrução dentro do loop interno, ela termina o loop interno, mas não o loop externo. Por exemplo,

 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); ) ) ) )

Resultado

Semana: 1 Dia: 1 Dia: 2…. Semana: 2 Semana: 3 Dia: 1 Dia: 2….….

No exemplo acima, usamos a instrução break dentro do forloop interno . Aqui, o programa pula o loop quando i é 2 .

Portanto, os dias da semana 2 não são impressos. No entanto, o loop externo que imprime a semana não é afetado.

Da mesma forma, quando usamos uma continueinstrução dentro do loop interno, ela ignora a iteração atual apenas do loop interno. O loop externo não é afetado. Por exemplo,

 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); ) ) ) )

Resultado

 Semana: 1 Dias: 2 Dias: 4 Dias: 6 Semana: 2 Dias: 2 Dias: 4 Dias: 6 Semana: 3 Dias: 2 Dias: 4 Dias: 6

No exemplo acima, usamos a instrução continue dentro do loop for interno. Observe o código,

 if(j % 2 != 0) ( continue; )

Aqui, a continueinstrução é executada quando o valor de j é ímpar. Portanto, o programa só imprime os dias pares.

Podemos ver que a continueinstrução afetou apenas o loop interno. O loop externo está funcionando sem problemas.

Artigos interessantes...