do-while 结构
do-while 循环与 while 循环的区别在于:do-while 先执行循环体,再判断条件。
执行流程
- 先执行一次循环体中的语句块
- 再计算
boolean表达式的值 - 如果为
true,再次执行循环体,如此循环往复 - 直到
boolean表达式的值为false,退出循环
do {
语句块;
} while (boolean表达式);Code language: JavaScript (javascript)
关键区别:
do-while至少会执行一次循环体,而while可能一次都不执行。
使用 do-while 改写猜数字游戏
public static void main(String[] args) {
int num = (int)(Math.random() * 100 + 1); // 生成 1~100 的随机目标数字
Scanner scan = new Scanner(System.in);
int input;
System.out.println("请输入一个数字(1~100,输入0退出):");
do {
input = scan.nextInt();
if (input == 0) {
System.out.println("已退出游戏。");
break;
}
if (input > num) {
System.out.println("太大了");
} else if (input < num) {
System.out.println("太小了");
} else {
System.out.println("猜中了!答案是 " + num);
}
if (input != num && input != 0) {
System.out.println("请继续输入(输入0退出):");
}
} while (input != num && input != 0);
}Code language: JavaScript (javascript)
while 与 do-while 对比
| 对比项 | while | do-while |
|---|---|---|
| 执行顺序 | 先判断,后执行 | 先执行,后判断 |
| 最少执行次数 | 0 次 | 1 次 |
| 适用场景 | 可能不需要执行的情况 | 至少需要执行一次的情况 |
典型使用场景
do-while 适合至少执行一次的场景,比如:
- 菜单驱动程序(至少显示一次菜单)
- 输入校验(至少读取一次用户输入)
- 游戏主循环(至少执行一帧)
// 示例:至少执行一次的菜单
do {
System.out.println("1. 开始游戏");
System.out.println("2. 查看帮助");
System.out.println("3. 退出");
choice = scan.nextInt();
} while (choice != 3);Code language: JavaScript (javascript)
注意:
do-while循环末尾的while(条件)后面必须有分号;,这是与while循环语法上的重要区别。
Previous: 改进猜数字练习——加入随机数
Next: for 结构