1. 入门
写代码的时候,经常要重复做同样的事好多次。比如:
- 遍历列表里的所有元素。
- 不停从键盘读值,直到用户输入了想要的内容。
- 算1到100所有数字的和。
- 一直让用户输入密码,直到输对为止。
如果不用循环来写这些,代码会又长又无聊,还很难维护。想象一下你写个计算器程序,结果要手动把1加到10:
int sum = 0;
sum += 1;
sum += 2;
sum += 3;
// ... 这样写10次。服了。
你肯定写到一半就烦了!解决办法就是循环。循环让你用很简洁的方式描述重复的操作。今天我们就来认识一下最基础但超有用的循环——while。
2. 认识while循环
语法和基本结构
while循环就像编程世界里的“鹦鹉”:只要条件成立,它就一直重复同一段代码。条件一旦不成立,鹦鹉就闭嘴(循环结束)。
while (条件)
{
// 循环体
}
while循环的写法,带代码块
流程图
下面是一个简单的流程图,帮你理解while循环的工作方式:
3. 示例:while循环实战
经典计数器
来个简单的程序,从1数到5并输出数字:
int i = 1;
while (i <= 5)
{
Console.WriteLine($"第 {i} 步");
i++; // 别忘了让计数器加一!
}
// 输出:
// 第 1 步
// 第 2 步
// 第 3 步
// 第 4 步
// 第 5 步
注意:如果忘了让i加一,循环就永远不会结束(我们的鹦鹉就成了不死鸟,一直重复)。这叫死循环——挺吓人的。
一直输入直到输入对
循环经常用来“逼”用户输入正确的内容:
string password = "";
while (password != "qwerty")
{
Console.Write("请输入密码: ");
password = Console.ReadLine();
}
Console.WriteLine("欢迎!");
这里程序会让你输入密码,直到你敲出那个神秘的"qwerty"。注意:如果删掉password = Console.ReadLine();这行,循环又会变成死循环(一直问密码但不读输入——直接卡死,像坏掉的机器人)。
4. while循环的类型和用法场景
普通while循环
这种循环,像上面那样,在第一次循环前就会判断条件。如果条件一开始就是假的——循环体一次都不会执行。
例子:条件一开始就不成立
int i = 10;
while (i < 5)
{
Console.WriteLine(i); // 永远不会执行!
}
很合理吧。就是这么回事。
嵌套while循环
有时候需要循环里套循环。比如遍历每一行,然后检查每一行的每个字符。现在先简单看看例子,后面几节课会详细讲:
int i = 1;
while (i <= 3)
{
int j = 1;
while (j <= 2)
{
Console.WriteLine($"i = {i}, j = {j}");
j++;
}
i++;
}
// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2
嵌套循环我们后面会详细聊,这里先吓你一跳 :)
死循环
有些循环会结束,有些——永远不会停。
while (true)
{
Console.WriteLine("我永远不会停!");
}
这种用得不多,通常是后台进程(比如服务器)才会这样,但实际开发也会遇到。
5. 怎么避免写出傻循环:while常见错误
循环就像电一样:很酷,但要懂安全用法。
问题1:一不小心写成死循环
新手最常犯的错就是忘了更新条件变量。结果循环“永远”执行下去,只能强制关掉程序(比如按Ctrl + C)。
int i = 1;
while (i <= 5)
{
Console.WriteLine(i);
// i++; // 哎呀!忘了让i加一
}
问题2:条件写错了
有时候开发者自己挖坑:条件根本不可能成立。结果循环一次都不执行。
int i = 10;
while (i < 5)
{
Console.WriteLine(i); // 这段代码永远不会执行。
i++;
}
问题3:数据类型写错了
循环条件必须是布尔表达式——也就是结果只能是true或false。
int number = 5;
while (number) // 错误!这里要bool,不是int。
{
number--;
}
GO TO FULL VERSION