什么是 do-while 循环?
do-while 循环是 Java 中三种基本的循环结构之一(另外两种是 for 循环和 while 循环),它的核心特点是:循环体中的代码至少会被执行一次,然后再判断循环条件,决定是否继续执行。

语法结构
do-while 循环的语法结构如下:
do {
// 循环体
// 在这里编写需要重复执行的代码
} while (循环条件); // 注意:分号 ; 是必须的!
执行流程
do-while 循环的执行顺序非常关键:
- 执行:无条件地执行
do { ... }代码块中的内容(循环体)。 - 判断:执行完循环体后,计算
while ( ... )中的条件表达式。 - 循环或退出:
- 如果条件表达式为
true,则返回第 1 步,继续执行循环体。 - 如果条件表达式为
false,则循环结束,程序执行do-while语句后面的代码。
- 如果条件表达式为
流程图:
+-----------+
| 开始 |
+-----------+
|
v
+-----------+
| 执行循环体 |
+-----------+
|
v
+-----------+
| 判断条件 |
+-----------+
/ \
(true) (false)
| |
+-------+
| 结束 |
+-------+
与 while 循环的关键区别
这是理解 do-while 循环最重要的部分。

| 特性 | while 循环 |
do-while 循环 |
|---|---|---|
| 执行顺序 | 先判断,后执行 | 先执行,后判断 |
| 最少执行次数 | 0次(如果第一次条件就为 false,循环体一次都不会执行) |
1次(无论条件是否为 false,循环体至少会执行一次) |
简单记忆:
while:像保安,先检查你的证件(条件),没问题才让你进门(执行代码)。do-while:像自助餐,你先拿食物(执行代码),吃完后再决定是否还要再拿(判断条件)。
代码示例
示例 1:基本用法
这个例子会打印数字 1 到 5。
public class DoWhileExample {
public static void main(String[] args) {
int i = 1;
System.out.println("--- do-while 循环示例 ---");
do {
System.out.println("当前数字是: " + i);
i++; // i 自增
} while (i <= 5); // 当 i 小于等于 5 时,继续循环
System.out.println("循环结束。");
}
}
输出:
--- do-while 循环示例 ---
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
当前数字是: 5
循环结束。
示例 2:条件一开始就为 false(展示“至少执行一次”的特性)
让我们修改一下上面的例子,让初始条件 i 大于 5。

public class DoWhileExample2 {
public static void main(String[] args) {
int i = 10; // i 初始值为 10,大于 5
System.out.println("--- 条件为 false 的 do-while 循环示例 ---");
do {
// 即使 while(i <= 5) 条件一开始就是 false,
// do-while 循环依然会执行一次循环体
System.out.println("这个循环体被执行了!i 的值是: " + i);
} while (i <= 5); // 条件为 false,循环将在此结束
System.out.println("循环结束。");
}
}
输出:
--- 条件为 false 的 do-while 循环示例 ---
这个循环体被执行了!i 的值是: 10
循环结束。
分析: 尽管条件 10 <= 5 是 false,但 do 块中的代码依然被执行了一次,这清晰地展示了 do-while 的核心特性。
示例 3:用户输入验证
do-while 循环非常适合用于需要至少执行一次的场景,比如菜单系统或用户输入验证。
import java.util.Scanner;
public class UserInputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String choice;
do {
System.out.println("\n--- 主菜单 ---");
System.out.println("1. 查看信息");
System.out.println("2. 修改设置");
System.out.println("3. 退出");
System.out.print("请输入您的选择 (1-3): ");
choice = scanner.nextLine();
if (choice.equals("1")) {
System.out.println("您选择了:查看信息");
} else if (choice.equals("2")) {
System.out.println("您选择了:修改设置");
} else if (choice.equals("3")) {
System.out.println("您选择了:退出");
} else {
System.out.println("无效的输入,请重新选择。");
}
} while (!choice.equals("3")); // 只要用户不输入 "3",循环就一直继续
System.out.println("程序已退出。");
scanner.close();
}
}
使用场景总结
当你遇到以下情况时,do-while 循环是最佳选择:
- 需要至少执行一次:这是最常见的原因,显示一个菜单,无论用户第一次输入什么,菜单都必须先显示出来。
- 循环条件依赖于循环体内部的计算:有时,只有在执行完循环体后,你才能确定下一次是否需要继续循环,读取文件直到遇到文件尾,但你必须先尝试读取一次才能知道是否到达了文件尾。
注意事项
- 不要忘记分号:
do-while循环的while条件后面必须有一个分号 ,这是一个非常常见的初学者错误。// 错误示范 do { // ... } while (i < 10) // 缺少分号! - 避免无限循环:确保循环条件在某个时刻会变为
false,否则循环将永远执行下去(无限循环)。// 这是一个无限循环,因为 i 的值永远不会改变 int j = 1; do { System.out.println("j: " + j); } while (j > 0);
希望这个详细的解释能帮助你完全理解 Java 中的 do-while 循环!
