1. 认识一下 do-while 循环
来,先想象一下:你要写个程序,猜用户心里想的数字。你得让程序至少一次问用户输入数字,然后只要没猜中就一直问下去。但如果一开始条件就不成立,普通的while根本不会进循环体。
这时候do-while循环就派上用场了。和while不一样,它无论如何都会先执行一次循环体——就算条件一开始就是假的。就像你买不买东西都能免费拿到口香糖一样。
do
{
// 循环体:这段代码至少会执行一次
}
while (条件);
do-while循环的语法
注意分号;在条件括号后面!普通的while后面没有分号,这里却有。新手很容易踩坑哦 :)
do-while循环的步骤说明
- 进入循环体(至少一次)。
- 检查条件。
- 如果条件为真——再执行一次循环体。
- 如果条件为假——跳出循环。
2. 和普通 while 的区别
回忆一下普通while的基本用法:
while (条件)
{
// 循环体
}
如果条件一开始就是假的,循环体一次都不会执行!
再来看do-while的例子:
do
{
// 循环体
}
while (条件);
就算条件一开始就是假的,循环体也会至少执行一次!
用代码来举个例子:
// 普通while
int count = 0;
while (count > 0)
{
Console.WriteLine("count = " + count);
count--;
}
// 什么都不会输出
// do-while
int count2 = 0;
do
{
Console.WriteLine("count2 = " + count2);
count2--;
}
while (count2 > 0);
// 会输出 "count2 = 0",虽然条件一开始就是假的!
有时候这种行为看起来有点“奇怪”,但有时候正是这种特性救了你的代码(比如做用户输入和数据校验的时候)。
3. do-while 的实际应用场景
这个循环最常见在哪些地方?
数据校验
最常见的场景——你想让用户输入点靠谱的东西(比如只能输入数字,或者密码不能少于6位),只要输入不对就一直让他重输。
string password;
do
{
Console.Write("输入新密码(至少6个字符): ");
password = Console.ReadLine();
}
while (password.Length < 6);
Console.WriteLine("密码已接受!");
在这个例子里,无论用户第一次就输对还是输错,循环体都会至少执行一次。
控制台程序里的菜单
很常见也很实用的套路:显示菜单,等用户输入命令,只有输入特定命令才退出循环。
string command;
do
{
Console.WriteLine("菜单:");
Console.WriteLine("1. 显示问候语");
Console.WriteLine("2. 退出");
Console.Write("请选择操作: ");
command = Console.ReadLine();
if (command == "1")
{
Console.WriteLine("你好,世界!");
}
else if (command != "2")
{
Console.WriteLine("未知命令。");
}
}
while (command != "2");
Console.WriteLine("拜拜!");
4. while 和其他循环的对比
| 循环类型 | 条件检查时机 | 循环体可能执行次数 | 适用场景 |
|---|---|---|---|
| while | 之前 | 0次或多次 | 当你事先不知道要循环多少次 |
| do-while | 之后 | 1次或多次 | 至少要执行一次的时候 |
| for | 之前 | 0次或多次 | 已知循环次数的时候 |
GO TO FULL VERSION