在编程中,通常希望执行某些语句块指定次数。一种可能的解决方案是键入所需次数的语句。但是,重复的次数可能事先未知(在编译时),或者可能不够大(例如10000)。
此类问题的最佳解决方案是循环。循环在编程中用于重复执行某个语句块,直到满足某些条件为止。
在本文中,我们将学习在C#中使用while循环。
C#while循环
while关键字用于在C#中创建while循环。 while循环的语法为:
while (test-expression)
{
// body of while
}
while循环如何工作?
- C#while循环包含一个
test-expression
。 - 如果
test-expression
计算为true
,- while循环内的语句将被执行。
- 执行后,将再次评估
test-expression
。
- 如果将
test-expression
评估为false
,则while循环终止。
while循环流程图
示例1:while循环
using System;
namespace Loop
{
class WhileLoop
{
public static void Main(string[] args)
{
int i=1;
while (i<=5)
{
Console.WriteLine("C# For Loop: Iteration {0}", i);
i++;
}
}
}
}
当我们运行程序时,输出将是:
C# For Loop: Iteration 1
C# For Loop: Iteration 2
C# For Loop: Iteration 3
C# For Loop: Iteration 4
C# For Loop: Iteration 5
最初, i的值为1。
当程序到达while循环语句时,
- 对测试表达式
i <=5
进行评估。由于i为1且1 <= 5
为true
,因此它执行while循环的主体。在这里,该行以迭代1打印在屏幕上, i的值增加1变为2。 - 现在,再次评估测试表达式(
i <=5
)。同样,这次表达式也返回true
(2 <= 5),因此该行将显示在屏幕上,并且i的值现在增加到3。 - 这样,while循环将执行直到i变为6。这时,test-expression的计算结果为
false
,因此循环终止。
示例2:while循环以计算前5个自然数之和
using System;
namespace Loop
{
class WhileLoop
{
public static void Main(string[] args)
{
int i=1, sum=0;
while (i<=5)
{
sum += i;
i++;
}
Console.WriteLine("Sum = {0}", sum);
}
}
}
当我们运行程序时,输出将是:
Sum = 15
该程序计算前5个自然数的总和。
- 最初, sum的值初始化为0。
- 在每次迭代中, 和的值被更新为
sum+i
和i的值增加1。 - 当i的值达到6时,测试表达式
i<=5
将返回false,并且循环终止。
让我们看看给定程序在每次迭代中会发生什么。
最初, i = 1, 总和 = 0
Iteration | Value of i | i<=5 | Value of sum |
---|---|---|---|
1 | 1 | true | 0+1 = 1 |
2 | 2 | true | 1+2 = 3 |
3 | 3 | true | 3+3 = 6 |
4 | 4 | true | 6+4 = 10 |
5 | 5 | true | 10+5 = 15 |
6 | 6 | false | Loop terminates |
因此, 总和的最终值为15。
C#做… while循环
do和while关键字用于创建do … while循环。它类似于while循环,但是它们之间有很大的不同。
在while循环中,在执行主体之前检查条件。与do … while循环完全相反,即在执行主体后检查条件。
这就是为什么do … while循环的主体将至少执行一次,而与test-expression无关。
do … while循环的语法为:
do
{
// body of do while loop
} while (test-expression);
… while循环如何工作?
- 首先执行do … while循环的主体。
- 然后评估
test-expression
。 - 如果
test-expression
为true
,则执行循环主体。 - 当
test-expression
为false
,do … while循环终止。
做… while循环流程图
示例3:do … while循环
using System;
namespace Loop
{
class DoWhileLoop
{
public static void Main(string[] args)
{
int i = 1, n = 5, product;
do
{
product = n * i;
Console.WriteLine("{0} * {1} = {2}", n, i, product);
i++;
} while (i <= 10);
}
}
}
当我们运行程序时,输出将是:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
如我们所见,上面的程序打印出一个数字(5)的乘法表。
- 最初, i的值为1。程序然后进入do..while循环的主体,而不检查任何条件(与while循环相对)。
- 在体内, 产品被计算并打印在屏幕上。 i的值然后增加到2。
- 在执行循环主体之后,对测试表达式
i <= 10
进行求值。总共,do … while循环将运行10次。 - 最后,当i的值为11时,test-expression的计算结果为
false
,因此终止了循环。
无限while和do … while循环
如果while和do … while循环中的测试表达式永远不会得出false
,则循环主体将永远运行。这样的循环称为无限循环。
例如:
无限while循环
while (true)
{
// body of while loop
}
无限做…循环
do
{
// body of while loop
} while (true);
只要我们需要程序运行,无限循环就很有用。
例如,如果您的程序是动画,则需要不断运行它,直到停止为止。在这种情况下,无限循环是必要的,以保持重复运行动画。