Java 嵌套循环
什么是嵌套循环?
嵌套循环是指在一个循环体内再定义一个循环的结构。简单来说,就是循环中还有循环。这种结构在处理多维数据(如二维数组)或需要 按照特定模式进行重复操作时特别有用。
在Java中,我们可以嵌套任何类型的循环(for
、while
、do-while
),且嵌套的层数理论上没有限制,但通常不建议超过三层,否则代码可读性会大大降低。
嵌套循环的基本语法
以下是嵌套循环的一般语法结构:
// 外层循环
for (初始化; 条件; 递增/递减) {
// 外层循环体代码
// 内层循环
for (初始化; 条件; 递增/递减) {
// 内层循环体代码
}
// 外层循环体的其他代码
}
嵌套循环的执行流程
嵌套循环的执行过程可以想象成时钟的运行:
- 外层循环就像小时指针,每走一步(一次迭代)
- 内层循环则像分钟指针,需要完整地走一圈(完成所有迭代)
理解执行次数
如果外层循环执行n次,内层循环执行m次,那么内层循环体的代码总共会执行n×m次。
嵌套循环示例
示例1:简单的乘法表
下面是使用嵌套循环打印九九乘法表的例子:
public class MultiplicationTable {
public static void main(String[] args) {
// 外层循环控制行数
for (int i = 1; i <= 9; i++) {
// 内层循环控制列数
for (int j = 1; j <= i; j++) {
System.out.print(j + "×" + i + "=" + (i * j) + "\t");
}
// 每一行结束后换行
System.out.println();
}
}
}
输出结果:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
示例2:打印星号图案
使用嵌套循环来打印三角形图案:
public class StarPattern {
public static void main(String[] args) {
int rows = 5;
// 外层循环控制行数
for (int i = 1; i <= rows; i++) {
// 内层循环打印空格
for (int j = rows - i; j >= 1; j--) {
System.out.print(" ");
}
// 内层循环打印星号
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
输出结果:
*
***
*****
*******
*********
不同类型循环的嵌套
嵌套循环可以混合使用不同类型的循环结构:
for循环嵌套在while循环内
public class MixedLoops {
public static void main(String[] args) {
int i = 1;
// 外层while循环
while (i <= 3) {
System.out.println("外层循环执行第" + i + "次");
// 内层for循环
for (int j = 1; j <= 2; j++) {
System.out.println(" 内层循环执行第" + j + "次");
}
i++;
System.out.println(); // 添加空行
}
}
}
输出结果:
外层循环执行第1次
内层循环执行第1次
内层循环执行第2次
外层循环执行第2次
内层循环执行第1次
内层循环执行第2次
外层循环执行第3次
内层循环执行第1次
内层循环执行第2次