跳到内容

元数据卡

  • 前置知识:if/else 分支逻辑、关系操作符
  • 预计时间:15 分钟
  • 完成标志:能用 whilefor 实现循环,知道 do-while 的特点

你学会了选择。但老陈在井边说的三句话,你只用了两句。还有一句:

懂得重复——你才走得到终点。

阿花站在铁匠铺门口,面前排了一长串村民。

"我要 10 个铁锭。一个一个来——给一个,收一个的钱,直到给满 10 个。"

这种"反复做同一件事,直到条件不再满足"的场景,你的代码也需要。


while 循环——先判断,再执行

java
int count = 0;

while (count < 10) {
    System.out.println("交付第 " + (count + 1) + " 个铁锭");
    count++; // 关键——别忘了让条件最终变为 false!
}

语言:Java 17+ 预期输出:打印 10 行,从"交付第 1 个铁锭"到"交付第 10 个铁锭"

while 循环的执行逻辑很简单:

条件为 true → 执行代码块 → 回到条件判断
 → 还是 true → 再执行 → …… → 条件变为 false → 跳出循环

Python 差异: Python 的 while 语法一样,只是条件后面加冒号,代码块用缩进。count += 1 代替 count++

C++ 差异: 语法和 Java 完全一致。C++ 的 while 条件也可以接受整数(非 0 为 true)。

死循环——你的第一个无限坠落

java
int count = 0;
while (count < 10) {
    System.out.println("交付铁锭");
    // 忘了 count++!
}
// 这个程序永远打印下去,直到你按 Ctrl+C 杀死它

这玩意儿叫死循环(infinite loop)。不是程序卡了——是它跑得太开心,永远不满足退出条件。你开发的第一个小时里至少会遇到一次。终止方法:终端里按 Ctrl+C


for 循环——把计数三件事写在一起

while 虽然万能,但"从 0 到 9,每次 +1"这个模式太常见了——初始化、条件判断、步进更新,这三行在 while 里被分散到三处。Java 给了你 for 循环

java
for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

语言:Java 17+ 预期输出:0 到 9,每行一个数字

for 的三个部分在圆括号里用分号隔开:

for (初始化 ; 条件 ; 更新) {
    循环体
}

执行顺序:初始化(只一次)→ 条件判断(true 才进)→ 循环体更新 → 回到条件判断

拿个具体例子:打印 1 到 5 的平方:

java
for (int i = 1; i <= 5; i++) {
    int square = i * i;
    System.out.println(i + " 的平方 = " + square);
}

语言:Java 预期输出

1 的平方 = 1
2 的平方 = 4
3 的平方 = 9
4 的平方 = 16
5 的平方 = 25

Python 差异: Python 没有 C 风格的 for (;;)。全世界的 for 都是 for i in range(10)

python
for i in range(10):     # 0 到 9
    print(i)
for i in range(1, 6):   # 1 到 5
    print(str(i) + " 的平方 = " + str(i*i))

range(start, stop, step) 生成整数序列,这是 Python 最优雅的设计之一。

C++ 差异: 语法和 Java 完全一样。但 C++ 允许在初始化部分声明多个变量: for (int i = 0, j = 10; i < j; i++, j--)


for-each——遍历数组更干净

如果你手头有个数组,想一个个拿出来处理:

java
int[] scores = {85, 92, 78, 65, 99};

// 传统 for
for (int i = 0; i < scores.length; i++) {
    System.out.println(scores[i]);
}

// for-each —— 更干净
for (int score : scores) {
    System.out.println(score);
}

for-each 语法for (元素类型 变量名 : 数组或集合)。它自动帮你取每一个元素,不用操心索引和长度。


do-while——至少执行一次

低频语法do-while 在实际工程中出现频率远低于 if/for/while。知道它存在即可。

do-whilewhile 唯一的区别是:至少执行一次循环体,再判断条件。

java
int num = 100;

while (num < 10) {
    System.out.println("你不会看到我——条件一开始就是 false");
}

do {
    System.out.println("你会看到我——至少跑一次");
} while (num < 10);

语言:Java 预期输出你会看到我——至少跑一次

什么时候用?当你不管三七二十一,先做一次再判断的时候——比如先显示游戏菜单,再问"继续吗?"


旅人笔记

while → 条件驱动,不计数。for → 计数循环,用得多。for-each → 遍历数组,最干净。do-while → 先做一次再说。核心记住:循环条件必须最终能变为 false,否则等你的只有死循环。

→ 下一步:break 与 continue

Built with VitePress | Software Systems Atlas