C#循环语句do-while
一、do...while循环核心语法
do
{
循环体代码; // 先执行一次,再判断条件
} while (条件表达式);
⚠️ 语法注意:while后面必须加分号(;),这是容易遗漏的易错点,缺少分号会导致语法错误。
二、核心逻辑(重点)
执行顺序:先执行一次循环体 → 再判断条件表达式 → 条件成立则继续循环,条件不成立则终止循环。
核心特点:最少执行一次循环体,无论条件是否成立,循环体都会先执行一次(这是与while循环的核心区别)。
三、实战案例(全覆盖)
示例1:条件不成立的do...while循环(仍执行一次)
do // 先执行循环体,再判断条件
{
Console.WriteLine("do...while流程控制"); // 必执行一次
} while (false); // 条件不成立,执行一次后终止循环
示例2:do...while实现“输入正数”校验
需求:用户输入小于0的数,要求一直重新输入,直到输入正数为止。
int num1;
do
{
Console.WriteLine("请输入一个正数"); // 先提示,再接收输入(用户体验更友好)
num1 = int.Parse(Console.ReadLine()); // 接收用户输入的数字
} while (num1 < 0); // 条件:num1小于0时,继续循环(重新输入)
优势:无需提前初始化num1,首次输入前会先给出提示,避免while循环“先输入、再提示”的弊端。
示例3:do...while计算输入数字的阶乘
需求:接收用户输入的数字,计算其阶乘(如8! = 8×7×6×...×1)。
int i1 = 1; // 计数器(初始值为1,阶乘从1乘起)
int sum3 = 1; // 存储阶乘乘积(初始值为1,避免乘法结果为0)
Console.WriteLine("请输入一个数");
int num3 = int.Parse(Console.ReadLine());// 接收用户输入
do
{
sum3 *= i1; // 先执行乘积计算(sum3 = sum3 × i1)
i1++; // 计数器自增,遍历到输入的数字
} while (i1 <= num3); // 再判断条件,成立则继续循环
Console.WriteLine(sum3); // 输出阶乘结果
说明:即使输入数字为0或1,循环体也会执行一次,计算结果正确(0!和1!均为1)。
while版本
//while实现输入数字的阶乘
Console.WriteLine("请输入一个数:");
int num2 = Convert.ToInt32(Console.ReadLine()); // 8!=8 * 7*6....1
int i = 1;//计数器
int sum2 = 1;// 代表乘积
string s = "";
while (i <= num2)
{
sum2 *= i;// 计算乘积,把每次递增i乘以到sum2
s += $"{i}*";// 字符串拼接 把i替换成递增量
i++;// 递增量
}
//字符串s.Length字符串的长度属性
// s.Remove()移除字符串当中的其中一个字符,
//s. Length-1长度减1,从o开始,
//string sl= s.Remove(s.Length-1):
//Console.WriteLine(s1);//1*2*3*4*5*6*7*8
Console.WriteLine(s); //1*2*3*4*5*6*7*8*
Console.WriteLine(sum2);
注释部分为扩展
四、do...while与while循环的核心区别(重点对比)
|
对比维度 |
do...while循环 |
while循环 |
|---|---|---|
|
执行顺序 |
先执行循环体,再判断条件 |
先判断条件,再执行循环体 |
|
执行次数 |
最少执行1次 |
可能一次都不执行(条件不成立时) |
|
语法细节 |
while后必须加“;” |
while后无需加“;” |
|
适用场景 |
需要“至少执行一次”的场景(如输入校验、初始化操作) |
无需强制执行一次,根据条件决定是否执行(如遍历、计数) |
五、易错点提醒(高频踩坑)
-
遗漏while后的分号(;),导致语法错误;
-
混淆do...while与while的执行顺序,误以为do...while也会“先判断后执行”;
-
计算阶乘时,将乘积变量(如sum3)初始值设为0,导致最终结果为0(正确初始值为1);
-
在循环体中忘记更新计数器(如i++),导致死循环。
六、核心总结
-
do...while核心:先执行、后判断,最少执行1次循环体;
-
语法关键:while后必须加“;”,不可遗漏;
-
适用场景:输入校验、初始化操作等需要“至少执行一次”的需求;
-
与while的核心区别:执行顺序和最小执行次数不同;
-
避免死循环:循环体中必须包含计数器更新(如i++)。
更多推荐
所有评论(0)