嵌套循环
嵌套循环是指在一个循环内部再包含另一个循环,常见的形式有 for 里嵌套 for、while 里嵌套 while、for 里嵌套 while 等。
执行规则
外层循环每执行一次,内层循环就会完整地执行一轮。内层循环全部执行完毕后,才会回到外层循环进入下一次迭代。
外层循环执行 1 次 → 内层循环完整执行 N 次
外层循环执行 2 次 → 内层循环再完整执行 N 次
...
基本示例:双层 for 循环
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println(i * j);
}
}
执行过程:
| 外层 i | 内层 j 的变化 |
|---|---|
| i = 0 | j 从 0 到 9,执行 10 次 |
| i = 1 | j 从 0 到 9,执行 10 次 |
| … | … |
| i = 9 | j 从 0 到 9,执行 10 次 |
总共执行 10 × 10 = 100 次。
练习一:输出九九乘法口诀(完整矩形)
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10; j++) {
System.out.print(i + "x" + j + " = " + (i * j) + " ");
}
System.out.println("");
}Code language: PHP (php)
练习二:阶梯型九九乘法口诀
只输出 j ≤ i 的部分,形成下三角格式:
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "x" + j + " = " + (i * j) + " ");
}
System.out.println("");
}Code language: PHP (php)
输出效果:
1x1 = 1
2x1 = 2 2x2 = 4
3x1 = 6 3x2 = 6 3x3 = 9
...
9x1 = 9 9x2 = 18 ... 9x9 = 81
多层嵌套示例
while (true) {
while (true) {
while (true) {
// 可以无限嵌套,但不建议过深,影响可读性
}
}
}Code language: JavaScript (javascript)
嵌套循环中 break 的作用范围
break 只能跳出它所在的那一层循环,不会影响外层循环:
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
if (i == 6) {
break; // 跳出外层循环,i 到 6 时整个循环结束
}
for (int j = 1; j <= i; j++) {
if (j == 6) {
break; // 只跳出内层 j 循环,外层 i 继续
}
System.out.print(i + "x" + j + " = " + (i * j) + " ");
}
System.out.println("");
}
}Code language: JavaScript (javascript)
| 场景 | break 效果 |
|---|---|
| 内层循环中 break | 只终止内层循环,外层继续 |
| 外层循环中 break | 终止外层循环,整个嵌套结构结束 |
注意:如果需要从内层直接跳出外层循环,可以使用带标签的 break(后续学习)。嵌套循环不宜过深,一般不超过三层,否则可读性差且容易出错。
Previous: 循环中使用 continue 跳出本次循环
Next: 数组的理解和数组的声明和初始化