循环嵌套

循环有 3 种,即 while、do…​while 和 for,这 3 种循环可以相互嵌套。例如,在 for 循环中套用 for 循环的代码如下:

for() {
  for(...) {
    ...
  }
}

在 while 循环中套用 while 循环的代码如下:

while(...) {
  while(...) {
    ...
  }
}

在 while 循环中套用 for 循环的代码如下:

while(...) {
  for(...) {
    ...
  }
}

【例4.9】使用嵌套 for 循环输出乘法口诀表(实例位置:资源包\TM\sl\4\9)

创建 Multiplication 类,使用嵌套for循环实现在控制台上输出乘法口诀表,实例代码如下:

public class Multiplication {
    public static void main(String[] args) {
        int i,j;                           // i代表行,j代表列
        for(i = 1; i < 10; i++) {          // 输出 9 行
            for (j = 1; j < i + 1; j++) {  // 输出与行数相等的列
                System.out.println(j + "*" + i + "=" + i * j + "\t"); // 输出拼接的字符串
            }
            System.out.println();          // 换行
        }
    }
}

运行结果如图4.15所示。

image 2024 02 28 14 30 59 030
Figure 1. 图4.15 使用嵌套for循环输出乘法口诀表

这个结果是如何得出来的呢?最外层的循环负责控制输出的行数,i 从 1 到 9,当 i =1 的时候,输出第一行,然后进入内层循环,这里的 j 是循环变量,循环的次数与 i 的值相同,所以使用 “j < i+1” 来控制,内层循环的次数决定本行有几列,所以先输出 j 的值,然后输出 “*” 号,再输出 i 的值,最后输出 j * i 的结果。内层循环全部执行完毕后,输出换行,然后开始下一行的循环。

编程训练(答案位置:资源包\TM\sl\4\编程训练)

【训练3】细胞分裂实验 生物实验室做单细胞细菌繁殖实验,每一代细菌数量都会成倍数增长,一代菌落中只有一个细菌,二代菌落中的细胞经分裂变成两个细菌,三代菌落中的细胞经分裂变成 4 个细菌,以此类推,请计算第十代菌落中的细菌数量。

【训练4】斐波那契数列 1, 1, 2, 3, 5, 8, 13, 21, 34, …是一组典型的斐波那契数列,前两个数相加等于第三个数。那么请问这组数中的第 n 个数的值是多少?