前言
在程序开发中,有时你可能希望连续多次执行某个操作。也就是说,你想多次重复地执行一行或者多行相同的代码,比如在控制台中打印5次相同的问候语“Hello”,按照我们已经学习过的知识,你的做法可能是这样的:
Console.WriteLine("Hello");
Console.WriteLine("Hello");
Console.WriteLine("Hello");
Console.WriteLine("Hello");
Console.WriteLine("Hello");
像上面的实现,重复写相同的代码是可以实现效果,但如果逻辑复杂一些,所有逻辑代码都要重复写,这显然是不方便管理和维护的。
C#语言提供了上述操作的流程控制,称之为循环控制,主要的循环控制语句有:while循环语句,do…while循环语句,for循环循环语句。
本节主要介绍while
循环语句。
while语法
while循环的语法结构如下:
while(布尔表达式)
{
//循环语句代码块
}
while
循环的语法格式是比较简洁的,以while
关键字开始,后面跟一个括号,括号里面需要一个布尔类型的条件。
只要布尔条件值为true(真),程序会一直从上到下依次执行while代码块中的代码。
因此,初始化操作应该在循环开始前完成,而递增或者递减操作应该在循环体内部执行。
一定注意确保循环正常退出,否则产生死循环
花括号后面没有分号
简单示例
int i = 0;
while (i<10)
{
Console.WriteLine("当前值: {0}", i);
i++;
}
输出结果:
当前值: 0
当前值: 1
当前值: 2
当前值: 3
当前值: 4
当前值: 5
当前值: 6
当前值: 7
当前值: 8
当前值: 9
//爬楼梯(8层楼)
int floorNumber = 1;
while (floorNumber<=8)
{
Console.WriteLine("当前楼层: {0},请继续...", floorNumber);
floorNumber++;
}
Console.WriteLine("成功到达");
输出结果:
当前楼层: 1,请继续...
当前楼层: 2,请继续...
当前楼层: 3,请继续...
当前楼层: 4,请继续...
当前楼层: 5,请继续...
当前楼层: 6,请继续...
当前楼层: 7,请继续...
当前楼层: 8,请继续...
成功到达
break
break
关键字用在循环中表示跳出当前的循环体。
int i = 0;
while (true)
{
Console.WriteLine("当前值: {0}", i);
i++;
if (i > 5)
{
Console.WriteLine($"i={i},退出循环.");
break;
}
}
Console.WriteLine("循环已结束");
输出结果:
当前值: 0
当前值: 1
当前值: 2
当前值: 3
当前值: 4
当前值: 5
i=6,退出循环.
循环已结束
continue
continue
关键字用在循环中表示结束本次循环,进入下一次循环。
int i = 0;
while (true)
{
i++;
if (i == 2)
{
Console.WriteLine($"i={i},结束本次循环.");
continue;
}
Console.WriteLine("当前值: {0}", i);
if (i > 5)
{
Console.WriteLine($"i={i},退出循环.");
break;
}
}
Console.WriteLine("循环已结束");
输出结果:
当前值: 1
i=2,结束本次循环.
当前值: 3
当前值: 4
当前值: 5
当前值: 6
i=6,退出循环.
循环已结束
循环嵌套
int i = 0;
while (i<2)
{
Console.WriteLine("当前i值: {0}", i);
i++;
int j=0;
while(j<2){
j++;
Console.WriteLine("当前j值: {0}", j);
}
}
输出结果:
当前i值: 0
当前j值: 1
当前j值: 2
当前i值: 1
当前j值: 1
当前j值: 2
完整的程序模拟实现
实现生活跑圈的例子:体育课上,老师安排同学们跑圈,每个人跑的圈数按照个人的表现情况来定。跑圈过程中可能会有的动作:跨栏,扔铅球。
- 如果圈数等于1,则去跨栏点跨栏
- 如果圈数等于2,则不跨栏也不扔铅球
- 如果圈数等于3或者4,则去扔5个铅球
- 如果某个同学有特殊情况,则立即停止跑圈
- 每个人最多跑5圈
//跑圈计数器
int counter = 0;
//是否继续跑
bool keepRunning = true;
//是否有特殊情况
bool specialSituation = false;
while (keepRunning)
{
//跑圈计数器加1
counter++;
if (specialSituation)
{
break;
}
if (counter == 1)
{
Console.WriteLine("跨栏");
}
if (counter == 2)
{
Console.WriteLine("不做其他活动");
continue;
}
if (counter == 3 || counter == 4)
{
Console.WriteLine("扔5个铅球");
}
if (counter > 5)
{
keepRunning = false;
}
Console.WriteLine("你已经跑了{0}圈。", counter);
if (keepRunning)
{
Console.WriteLine("还不达标,继续跑!!!");
}
}
Console.WriteLine("你一共跑了{0}圈。", counter);
输出结果:
跨栏
你已经跑了1圈。
还不达标,继续跑!!!
不做其他活动
扔5个铅球
你已经跑了3圈。
还不达标,继续跑!!!
扔5个铅球
你已经跑了4圈。
还不达标,继续跑!!!
你已经跑了5圈。
还不达标,继续跑!!!
你已经跑了6圈。
你一共跑了6圈。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册