If a loop exists inside the body of another loop, it's called a nested loop. Here's an example of the nested for
loop.
// outer loop
for (int i = 1; i <= 5; ++i) {
// codes
// inner loop
for(int j = 1; j <=2; ++j) {
// codes
}
..
}
Here, we are using a for
loop inside another for
loop.
We can use the nested loop to iterate through each day of a week for 3 weeks.
In this case, we can create a loop to iterate three times (3 weeks). And, inside the loop, we can create another loop to iterate 7 times (7 days).
Example 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);
}
}
}
}
Output
Week: 1 Day: 1 Day: 2 Day: 3 ..... .. .... Week: 2 Day: 1 Day: 2 Day: 3 .... .. .... .... .. ....
In the above example, the outer loop iterates 3 times and prints 3 weeks. And, the inner loop iterates 7 times and prints the 7 days.
We can also create nested loops with while and do...while in a similar way.
Note: It is possible to use one type of loop inside the body of another loop. For example, we can put a for
loop inside the while
loop.
Example 2: Java for loop inside the while loop
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;
}
}
}
Output:
Week: 1 Day: 1 Day: 2 Day: 3 .... .. .... Week: 2 Day: 1 Day: 2 Day: 3 .... .. .... .... .. ....
Here you can see that the output of both Example 1 and Example 2 is the same.
Example 3: Java nested loops to create a pattern
We can use the nested loop in Java to create patterns like full pyramid, half pyramid, inverted pyramid, and so on.
Here is a program to create a half pyramid pattern using nested loops.
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("");
}
}
}
Output
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
To learn more, visit the Java program to print pyramid and patterns.
break and continue Inside Nested Loops
When we use a break
statement inside the inner loop, it terminates the inner loop but not the outer loop. For example,
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);
}
}
}
}
Output
Week: 1 Day: 1 Day: 2 .... .. .... Week: 2 Week: 3 Day: 1 Day: 2 .... .. .... .... .. ....
In the above example, we have used the break statement inside the inner for
loop. Here, the program skips the loop when i is 2.
Hence, days for week 2 are not printed. However, the outer loop that prints week is unaffected.
Similarly, when we use a continue
statement inside the inner loop, it skips the current iteration of the inner loop only. The outer loop is unaffected. For example,
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);
}
}
}
}
Output
Week: 1 Days: 2 Days: 4 Days: 6 Week: 2 Days: 2 Days: 4 Days: 6 Week: 3 Days: 2 Days: 4 Days: 6
In the above example, we have used the continue statement inside the inner for loop. Notice the code,
if(j % 2 != 0) {
continue;
}
Here, the continue
statement is executed when the value of j is odd. Hence, the program only prints those days that are even.
We can see the continue
statement has affected only the inner loop. The outer loop is working without any problem.