1. 认识 do-while 循环
想象一下:你在编写一个程序来猜用户想的数字。需要至少一次询问这个数字,并在没猜中之前反复询问。如果事先检查条件,普通的 while 可能根本不会进入循环。
这时 do-while 就派上用场了。与 while 不同,它总会先执行一次循环体——即使条件一开始就是假。这就像在收银台总能拿到一块口香糖,无论是否有购买。
do-while 的语法
很简单:Java 中又一“成对出现”的关键字。
do
{
// 循环体:这段代码至少会执行一次
}
while (uslovie);
do-while 循环的语法
注意条件括号后面末尾的分号 ;!在普通的 while 中没有,而这里却有——新手的经典陷阱。
do-while 循环的步骤说明
- 进入循环体(总会至少一次)。
- 检查条件。
- 如果条件为真——重复执行循环体。
- 如果条件为假——退出循环。
2. 与普通 while 的区别
回顾普通 while 的基本工作流程:
while (uslovie)
{
// 循环体
}
如果条件从一开始就是假,循环体一次也不会执行!
现在看一个 do-while 的例子:
do
{
// 循环体
}
while (uslovie);
即使条件一开始就为假,循环体也会至少执行一次!
用代码来说明差异:
// 普通 while
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// 不会输出任何内容
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// 即使条件为假,也会输出 “count2 = 0”!
这有时看起来“有点奇怪”,但在处理用户输入和数据校验时,这正是所需要的行为。
3. do-while 的实际应用场景
这个循环最常出现在哪里?
数据校验
常见场景:让用户输入正确的数据(例如,密码不少于 6 个字符),并在一切正确之前反复提示。
String password;
do
{
System.out.print("请输入新密码(不少于 6 个字符):");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("密码已接受!");
循环体至少会执行一次——即使用户立刻输入了一个很长的密码。
控制台应用中的菜单
常见模式:显示菜单,等待命令,并且只在接收到特定命令时退出。
String command;
do
{
System.out.println("菜单:");
System.out.println("1. 显示问候");
System.out.println("2. 退出");
System.out.print("选择操作:");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("你好,世界!");
}
else if (!command.equals("2"))
{
System.out.println("未知命令。");
}
}
while (!command.equals("2"));
System.out.println("再见!");
4. 表格:比较 while 与其他循环
| 循环类型 | 条件检查时机 | 循环体可能执行的次数 | 适用场景 |
|---|---|---|---|
|
之前 | 0 次或更多 | 当事先未知重复次数时 |
|
之后 | 1 次或更多 | 当必须至少执行一次循环体时 |
|
之前 | 0 次或更多 | 当已知迭代次数时 |
GO TO FULL VERSION