4.3.4 嵌套循环

4.3.4 嵌套循环

如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环,嵌套循环既可以是for循环嵌套while循环,也可以是while循环嵌套do while循环…,即各种类型的循环都可以作为外层循环,也可以作为内层循环
当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被当做外层循环的循环体来执行。当内层循环执行结束,且外层循环的循环体执行结束时,则再次计算外层循环的循环条件,决定是否再次开始执行外层循环的循环体

总循环次数

根据上面分析,**假设外层循环的循环次数为n次,内层循环的循环次数为m次,那么内层循环的循环体实际上需要执行n乘以m次**。
嵌套循环的执行流程如图4.1所示。
这里有一张图片

内层循环当成外层循环的循环体

**嵌套循环就是把内层循环当成外层循环的循环体**。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可以结束外层循环的当次循环,开始下一次循环。

程序示例 嵌套循环

下面是一个嵌套循环的示例代码

1
2
3
4
5
6
7
8
9
10
11
public class NestedLoopTest {
public static void main(String[] args) {
// 外层循环
for (int i = 0; i < 5; i++) {
// 内层循环
for (int j = 0; j < 3; j++) {
System.out.println("i的值为:" + i + " j的值为:" + j);
}
}
}
}

运行上面程序,看到如下运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
i的值为:0  j的值为:0
i的值为:0 j的值为:1
i的值为:0 j的值为:2
i的值为:1 j的值为:0
i的值为:1 j的值为:1
i的值为:1 j的值为:2
i的值为:2 j的值为:0
i的值为:2 j的值为:1
i的值为:2 j的值为:2
i的值为:3 j的值为:0
i的值为:3 j的值为:1
i的值为:3 j的值为:2
i的值为:4 j的值为:0
i的值为:4 j的值为:1
i的值为:4 j的值为:2

从上面运行结果可以看出,进入嵌套循环时,循环变量i开始为0,这时即进入了外层循环。进入外层循环后,内层循环把i当成一个普通变量,其值为0。在外层循环的当次循环里,内层循环就是一个普通循环。
实际上,嵌套循环不仅可以是两层嵌套,而且可以是三层嵌套、四层嵌套…不论循环如何嵌套,总可以把内层循环当成外层循环的循环体来对待,区别只是这个循环体里包含了需要反复执行的代码。