C# while循环怎么用?

文章导读
Previous Quiz Next C# while 循环 是一种基本的控制流语句,它允许在指定条件为 true 时重复执行一段代码块。当迭代次数不确定时,这种循环结构非常有用。
📋 目录
  1. while 循环的语法
  2. while 循环的流程图
  3. while 循环的组成部分
  4. while 循环示例
  5. 更多 while 循环示例
  6. while 循环的使用场景
A A

C# - While 循环



Previous
Quiz
Next

C# while 循环 是一种基本的控制流语句,它允许在指定条件为 true 时重复执行一段代码块。当迭代次数不确定时,这种循环结构非常有用。

while 循环的语法

以下是 C# while 循环的语法 −

while(condition) {
   statement(s);
}

在这里,statement(s) 可以是单个语句或语句块。condition 可以是任意表达式,true 是任何非零值。只要条件为 true,循环就会迭代。

当条件变为 false 时,程序控制将传递到循环之后的下一行。

while 循环的流程图

while loop in C#

在这里,while 循环的关键点是循环可能一次都不会执行。当条件被测试且结果为 false 时,循环体将被跳过,执行 while 循环之后的第一个语句。

while 循环的组成部分

while 循环有三个主要部分:

  • 初始化:在计数器控制的循环中,当迭代次数已知时,此步骤在循环开始前定义计数器变量。
  • 条件:只要此条件为 true,循环就会运行。
  • 更新(递增/递减):条件内的计数器变量在每次迭代中都应发生变化,以防止无限循环。

语法

// 初始化
int i = 0;

// while 循环带条件
while (i < 5) {
    Console.WriteLine(i);
    
    // 更新(递增)
    i++;
}

while 循环示例

在以下示例中,我们使用 while 循环显示从 10 到 20 的数字 −

using System;
namespace Loops {
   class Program {
      static void Main(string[] args) {
         /* local variable definition */
         int a = 10;

         /* while loop execution */
         while (a <= 20) {
            Console.WriteLine("value of a: {0}", a);
            a++;
         }
         Console.ReadLine();
      }
   }
} 

上述代码编译并执行后,将产生以下结果 −

value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
value of a: 20

更多 while 循环示例

1. 计算前 n 个自然数的和

让我们看另一个 while 循环的示例。在这里,我们计算前 n 个自然数的和 −

using System;
class Example {
   static void Main(string[] args) {
      int n = 5, sum = 0, i = 1;
   
      while (i <= n) {
         sum += i; 
         i++;
      }  
      Console.WriteLine("Sum of first " + n + " numbers is: " + sum);
   }
}

上述代码的输出如下 −

Sum of first 5 numbers is: 15

2. 反转一个数字

在这个示例中,我们使用 while 循环反转给定的数字:

using System;
class Example {
   static void Main(string[] args) {
      int num = 12345, reverse = 0;
   
      while (num != 0) {
         int digit = num % 10; // 提取最后一位数字
         reverse = reverse * 10 + digit;
         num /= 10; // 移除最后一位数字
      }  
      Console.WriteLine("Reversed Number: " + reverse);
   }
}

上述代码的输出如下 −

Reversed Number: 54321

3. 计算数字中的位数

在这个示例中,我们使用 while 循环计算整数中的位数:

using System;
class Example {
   static void Main(string[] args) {
      int num = 987654, count = 0;
   
      while (num != 0) {
         num /= 10; // 移除最后一位数字
         count++;
      }  
      Console.WriteLine("Total Digits: " + count);
   }
}

上述代码的输出如下 −

Total Digits: 6

while 循环的使用场景

以下是一些常见的使用场景:

1. 持续读取用户输入直到满足条件

while 循环可用于持续接受用户的输入,直到他们输入特定值。

using System;
class Example {
    static void Main() {
        string input;
        while (true) {
            Console.Write("Enter a word (type 'exit' to stop): ");
            input = Console.ReadLine();
            if (input == "exit")
                break;
            Console.WriteLine("You entered: " + input);
        }
    }
}

2. 循环直到输入有效值

while 循环确保用户在继续之前提供正确的输入。

using System;
class Example {
    static void Main() {
        int number;
        Console.Write("Enter a positive number: ");
        while (!int.TryParse(Console.ReadLine(), out number) || number <= 0) {
            Console.Write("Invalid input! Please enter a positive number: ");
        }
        Console.WriteLine("You entered: " + number);
    }
}

3. 处理文件直到到达末尾

while 循环适用于逐行读取文件,直到没有更多数据可用。

using System;
using System.IO;
class Example {
    static void Main() {
        string filePath = "sample.txt";
        if (File.Exists(filePath)) {
            using (StreamReader reader = new StreamReader(filePath)) {
                string line;
                while ((line = reader.ReadLine()) != null) {
                    Console.WriteLine(line);
                }
            }
        }
    }
}

4. 生成随机数直到满足条件

这种 while 循环在游戏或模拟中很有用,其中条件是动态检查的。

using System;
class Example {
    static void Main() {
        Random rand = new Random();
        int number;
        do {
            number = rand.Next(1, 10);
            Console.WriteLine("Generated: " + number);
        } while (number != 7);
        Console.WriteLine("Stopped at 7!");
    }
}

5. 运行后台任务直到停止条件

while 循环可用于持续检查系统状态或等待标志变化。

using System;
using System.Threading;
class Example {
    static void Main() {
        bool isRunning = true;
        int counter = 0;
        while (isRunning) {
            Console.WriteLine("Running... " + counter);
            Thread.Sleep(1000); // 模拟延迟
            counter++;
            if (counter == 5) isRunning = false;
        }
        Console.WriteLine("Process stopped.");
    }