3.3 嵌套循环
循环内部还可以再放一个循环,这叫嵌套循环(nested loop)。外层循环每执行一轮,内层循环都会完整执行一遍。
基本执行顺序
先看一个很小的例子:
java
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
System.out.printf("外层 i = %d,内层 j = %d%n", i, j);
}
}运行结果:
text
外层 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 先取 0,内层的 j 依次走完 0, 1, 2;然后 i 取 1,内层 j 又重新从头走一遍。
正在加载交互实验...
正在加载概念检查...
九九乘法表
嵌套循环很适合处理二维结构,例如乘法表。外层循环控制行,内层循环控制列。
java
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.printf("%d*%d=%d\t", i, j, i * j);
}
System.out.println();
}运行结果:
text
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81每一行固定一个 i,然后让 j 从 1 走到 9。
如果要打印更常见的下三角乘法表,可以让 j 只走到当前的 i:
java
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%d*%d=%d\t", j, i, i * j);
}
System.out.println();
}打印图案
嵌套循环也常用于控制图案。下面的程序会打印一个星号三角形。
java
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}运行结果:
text
*
**
***
****
*****外层循环决定有多少行,内层循环决定每一行打印多少个 *。
正在加载概念检查...
正在加载本节练习...