CodeGym /课程 /C# SELF /while循环:入门和使用小技巧

while循环:入门和使用小技巧

C# SELF
第 4 级 , 课程 1
可用

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--;
}
2
任务
C# SELF, 第 4 级, 课程 1
已锁定
输出从1到10的数字
输出从1到10的数字
2
任务
C# SELF, 第 4 级, 课程 1
已锁定
累加到指定上限的数字之和
累加到指定上限的数字之和
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION