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 for
loop 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 for
loop dentro de outro for
loop.
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 for
loop dentro do while
loop.
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 break
instruçã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 for
loop 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 continue
instruçã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 continue
instrução é executada quando o valor de j é ímpar. Portanto, o programa só imprime os dias pares.
Podemos ver que a continue
instrução afetou apenas o loop interno. O loop externo está funcionando sem problemas.