当前位置: 首页 > 编程日记 > 正文

C#循环控制语句

本节课将介绍如何使用C#控制语句中的循环语句,本课目的如下:
1.学会"while"循环的用法。

2.学会"do" 循环的用法。

3.学会"for" 循环的用法。

4.学会foreach循环的用法。

5.进一步了解"break"语句的用法。

6.如何使用"continue"语句。

在C#中,使用"goto"语句并不是一个最佳的建立循环的方法。本节课将介绍建立循环的常用方法。

第一个要介绍的语句是while循环语句

1.清单 4-1. While循环:While loop.cs

using System;
class Whileloop {
public static void Main() {
int myInt = 0;

while (myInt < 10) {
Console.Write("{0} ", myInt);
myInt++;
}
Console.WriteLine();
}
}

说明

1.清单 4-1演示了一个简单的while 循环。

以关键字"while"开始,后面是个布尔表达式。所有的控制语句都使用了布尔表达式。这就意味着表达式必须计算出true 或者false值。本例中,我们将检查myInt变量,看看它是否小于10。 因为myInt已经初始化为0,第一次计算时,该布尔表达式将返回true值。一旦布尔表达式的值为true,将执行该布尔表达式后面块中的语句。

2.在while块中,我们把数字和空格输出到控制台中,之后,对 myInt进行加1运算。一旦执行了while块中的语句之后,再次计算布尔表达式的值,这种情况将一直循环下去,直到该布尔表达式的值为false为止。 一旦布尔表达式的值为false, 程序将从while 块之后的第一条语句开始执行。在本例中,我们把数字0到9输出到控制台中,之后退出while块,再输出一个新行到控制台。

同 "while"循环类似的是"do" 循环语句。

2.清单 4-2. Do 循环: Do loop.cs

using System;
class Doloop {
public static void Main() {
string myChoice;
do {
// Print A Menu
Console.WriteLine("My Address Book/n");
Console.WriteLine("A - Add New Address");
Console.WriteLine("D - Delete Address");
Console.WriteLine("M - Modify Address");
Console.WriteLine("V - View Addresses");
Console.WriteLine("Q - Quit/n");
Console.WriteLine("Choice (A,D,M,V,or Q): ");

// Retrieve the user's choice
myChoice = Console.ReadLine();
// Make a decision based on the user's choice
switch(myChoice) {
case "A":
case "a":
Console.WriteLine("You wish to add an address.");
break;
case "D":
case "d":
Console.WriteLine("You wish to delete an address.");
break;
case "M":
case "m":
Console.WriteLine("You wish to modify an address.");
break;
case "V":
case "v":
Console.WriteLine("You wish to view the address list.");
break;
case "Q":
case "q":
Console.WriteLine("Bye.");
break;
default:
Console.WriteLine("{0} is not a valid choice", myChoice);
}

// Pause to allow the user to see the results
Console.Write("Press any key to continue...");
Console.ReadLine();
Console.WriteLine();
} while (myChoice != "Q" && myChoice != "q"); // Keep going until the user wants to quit
}
}

说明

1.清单 4-2 演示了"do"循环的例子。 "do" 循环的格式是: do { <语句> } while (<布尔表达式>);其中的语句可以是任何合法的C#语句,布尔表达式同以前的规定一样,其返回值要么为true,要么为false。

2.如果你打算输出清单4-2 中的信息或者菜单,之后再读取用户的输入,那么就使用"do" 格式的循环而不要使用"while" 格式的循环语句。因为在本例中,布尔表达式的值是在循环结束处进行计算的, "do" 循环可以保证:循环体中的语句至少执行一次。与此相对应的是:"while" 循环一开始时,计算布尔表达式的值,"while" 循环不能保证循环体中的语句能够至少执行一次。

3.让我们来回顾一下清单 4-2中的内容。

在Main()方法中,我们定义了变量 "myChoice"为字符串类型。之后,输出一些信息到控制台,即输出一个可让用户进行选择的菜单。我们必须要得到用户的输入,即Console.ReadLine()方法所返回的值,该值存放在myChoice变量中。我们必须先得到用户的输入,之后再处理。要完成这件事,一个有效的方法是就使用 "switch"语句。注意到:为了获得同样的功能,我们既匹配了小写字母,也匹配了大写字母。另外一点是:我们使用了 "default:" case,这是个良好的编程作风。

3.清单 4-3. For 循环: For loop.cs

using System;
class Forloop {
public static void Main() {
for (int i=0; i < 20; i++) {
if (i == 10)
break;
if (i % 2 == 0)
continue;
Console.Write("{0} ", i);
}
Console.WriteLine();
}
}

说明

1.清单 4-3 演示了"for" 循环的用法。

当你能够精确地知道循环的次数时, For 循环语句就派上了用场。本程序同清单 4-1中"while" 循环程序的运行结果一样。 "for" 循环中,括号中内容由三个由分号隔开的部分: "(<初始化表>; <布尔表达式>; <post-loop 动作表>)"组成

2.初始化表是个由逗号隔开的表达式,在"for" 循环的整个周期中,这些表达式仅仅计算一次。计算是在一开始进行的,并且在循环语句的执行之前进行。正如在清单 4-3所见,通常初始化表是先初始化一个作为计数器的整型变量。

3.一旦进行初始化后, "for" 循环就进入第二部分:布尔表达式的计算。 这里的布尔表达式可以写得很复杂,但是结果只能是true或者false。布尔表达式通常用来验证计数器变量的状态。

4.一旦布尔表达式的值为true时,就会执行"for" 循环大括号中的语句。通常情况下,这些语句从左大括号开始,不中断地一直执行到右大括号。但在清单4-3中,有几个例外,几个"if"语句改变了程序的流程。

第一个"if"语句检查"i"是否等于10,这里使用了"break"语句,可在此处跳出循环,转入 "for"块后面的第一条语句的执行。

第二条"if"语句使用了求余运算符,看看"i"是否能够被2整除,如果余数等于0,就执行 "continue"语句。控制将跳过循环体中余下的语句,转入下一轮新的循环。你需要在块中正确地组织好语句,一旦满足有关条件,就执行相应的语句。

5.一旦程序流程遇到continue语句,或者遇到块的结尾处的右括号, 就转入"for" 循环括号中的第三项:post-loop 动作表,该表由逗号隔开,在"for"块中的语句都执行完毕之后,就执行该动作表中的动作。 清单 4-3中的 post-loop 动作表中的动作很典型:计数器加1。一旦动作表执行完毕,流程就转到对布尔表达式值进行判别。循环将继续进行下去,直到布尔表达式的值为true。当布尔表达式的值为false,控制流程就转到 "for"块之后的第一条语句。

4.清单 4-4. The ForEach 循环: ForEachloop.cs

using System;
class ForEachloop {
public static void Main() {
string[] names = {"Cheryl", "Joe", "Matt", "Robert"};
foreach (string person in names) {
Console.WriteLine("{0} ", person);
}
}
}

说明

1."foreach" 循环列举出集合中所有的元素。

清单 4-4所使用的数组类型,就是这样的一个集合。(在"System.Collections"也可以由其他的数据类型作集合。). 在Main()方法中,我们所做的第一件事是:定义由四个字符串组成的数组names。

2."foreach"括号中的表达式是由关键字in隔开的两个项组成。in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素。

该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值,放到只读变量中去,括号中的整个表达式返回值为true, "foreach"块中的语句就能够执行。一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到 "foreach" 块后面的第一条可执行语句。

3.在清单 4-4的例子中,我们使用了字符串变量person用来存放names数组的每个元素,并且使用Console.WriteLine()方法输出person 变量的值。

小结
到现在为止,你已经了解了"while","do","for"和"foreach" 循环语句的用法。最后你也学习了如何设置有关条件,来改变循环体块中的语句的流程。

相关文章:

2017-09-22 前端日报

2017-09-22 前端日报 精选 JavaScript 在 V8 中的元素种类及性能优化【译】异步递归&#xff1a;回调、Promise、Async[译]HTML&CSS Lesson5: 定位一个页面阻塞问题的排查过程前端分享之cookie的使用及单点登录An event for CSS position:stickyanvaka/ngraph.path: Path f…

C#选择控制语句

本节课将介绍如何使用C#选择控制语句&#xff0c;第三课将达到如下几个目的&#xff1a; 1.学会"if"语句的用法。2.学会"switch"语句的用法。3.学会在"switch"语句中如何使用"break"语句。4.理解"goto"语句的正确用法。在前…

将博客搬至51CTO

将博客搬至51CTO转载于:https://blog.51cto.com/imace/1540730

腾讯国风AI虚拟人学会作诗书法,背靠开源模型SongNet

5月21日&#xff0c;腾讯AI虚拟人艾灵再秀出新技能&#xff0c;首次展示AI作诗、AI书法等国风才艺&#xff0c;并与青年歌手白举纲跨次元合作&#xff0c;共同演唱国风新歌《百川千仞》。 AI“艾灵”诞生于腾讯AI Lab&#xff0c;来自实验性、探索性技术项目“多模态虚拟人”。…

Windows10安装Mysql5.7.19.0 msi 版本报错

安装环境&#xff1a;Windows10安装版本&#xff1a;MySql 5.7.19.0 msi1.安装5.7.19.0 msi版本Mysql时报如下错误&#xff1a;2.根据日志分析是缺少visual Studio 2013 Redistributable3.下载完成后&#xff0c;安装仍然显示失败&#xff1a;4.在网上下载各种vs测试&#xff0…

C#简单的欢迎程序

本节课通过介绍几个简单的程序&#xff0c;使得你对C#有所入门。本节程要达到如下几个目的&#xff1a; 1.理解一个C#程序的基本结构。2.初步了解"名称空间"的概念。3.初步了解"类"的概念。4.了解"Main"方法所做的工作。5.学会如何读取命令行输入…

知乎联合清华:开放国内最大个性化推荐实际交互数据集

5月21日&#xff0c;知乎联合清华大学对外开放基于知乎的大规模富文本查询和推荐数据集“ZhihuRec”。该数据集包含了知乎上的1亿个行为数据&#xff0c;是目前为止&#xff0c;国内用于个性化推荐的最大的实际交互数据集。 作为一个大型数据集&#xff0c;ZhihuRec具有社交化问…

SQL Server 2014 许可证(五)降级与升级

“版本”一词对应的英文单词有两个&#xff1a;&#xff08;1&#xff09; Version是指不同历史时期发生的产品&#xff0c;或者指产品不同的“代”&#xff0c;例如&#xff0c;SQL Server 2014 版本。&#xff08;2&#xff09; Edition是指在发行同一代产品&#xff08;Vers…

OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划

注&#xff1a;本文为原著&#xff08;其内容来自 腾科教育培训课堂&#xff09;。阅读本文注意事项如下&#xff1a;1&#xff1a;所有文章的转载请标注本文出处。2&#xff1a;本文非本人不得用于商业用途。违者将承当相应法律责任。3&#xff1a;该系列文章目录列表&#xf…

赠书 | 联邦学习如何在视觉领域应用?

前言&#xff1a;联邦学习是如何应用在视觉领域的&#xff1f;本文将通过一个获得了2020年AAAI人工智能创新应用奖的案例来向大家介绍。本案例是联邦学习在视觉、物联网、安防领域的实际应用&#xff0c;对分散在各地的摄像头数据&#xff0c;通过联邦学习&#xff0c;构建一个…

AME_Oracle自带AME审批链详解AME Standard Handler(概念)

2014-05-30 Created By BaoXinJian Oracle 自带了3大类&#xff0c;13个子类的审批链Action Type, 对应了13个标准的AME Standard Handler 1. 按主管层次审批 absolute job level / chains of authority based on absolute job levelfinal approver only / chains of authorit…

c# 中如何定义和接收消息

在C#中目前我还没有找到发送消息的类成员函数&#xff0c;所以只能采用通过调用WIN 32 API 的 SendMessage() 函数实现。由于 SendMessage的参数中需要得到窗体的句柄(handler) &#xff0c;所以又要调用另一个API FindWindow(), 两者配合使用&#xff0c;达到在不同窗体之间的…

java如何读写json文件

java如何读写json文件 在实际项目开发中&#xff0c;有时会遇到一些全局的配置缓存&#xff0c;最好的做法是配置redis数据库作为数据缓存&#xff0c;而当未有配置redis服务器时&#xff0c;读取静态资源文件&#xff08;如xml、json等&#xff09;也是一种实现方式&#xff0…

C#数组篇讲解

数组是我们经常用到的&#xff0c;我来介绍一下&#xff1a;数组是具有相同类型的一组数据。当访问数组中的数据时&#xff0c;可以通过下标来指明。c#中数组元素可以为任何数据类型&#xff0c;数组下标从0开始&#xff0c;即第一个元素对应的下标为0&#xff0c;以后逐个递增…

Spring AOP详解(转载)所需要的包

上一篇文章中&#xff0c;《Spring Aop详解&#xff08;转载&#xff09;》里的代码都可以运行&#xff0c;只是包比较多&#xff0c;中间缺少了几个相应的包&#xff0c;根据报错&#xff0c;几经百度搜索&#xff0c;终于补全了所有包。 截图如下&#xff1a; 在主测试类里面…

Mendix 披露低代码方法论,解读真实技术趋势

作者 | 宋慧头图 | 下载于视觉中国出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;在 2021年初正式宣布进入中国市场之后&#xff0c;Mendix 在近日向媒体重点披露了关于低代码的技术方法论&#xff0c;以及近四个月在中国市场的进展。Mendix 的低代码技术方法论对于…

PHP中foreach详细解读

oreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象&#xff0c;如果尝试应用于其他数据类型的变量&#xff0c;或者未初始化的变量将发出错误信息。有两种语法&#xff1a; foreach (array_expression as $value) statement foreach (array_expression…

Android ViewPager使用具体解释

这是谷歌官方给我们提供的一个兼容低版本号安卓设备的软件包&#xff0c;里面包囊了仅仅有在安卓3.0以上能够使用的api。而viewpager就是当中之中的一个利用它&#xff0c;我们能够做非常多事情&#xff0c;从最简单的导航&#xff0c;到页面菜单等等。那怎样使用它呢&#xff…

实时音视频的超级风口,开发者的机会在哪里?

2021年初因为Elon Musk“带货”而走红的音频社交App Clubhouse&#xff0c;又以肉眼可见的速度跌落神坛&#xff0c;下载量从2月的960 万/月跌至4月的92万/月。不过在5月&#xff0c;Clubhouse终于推出了安卓版&#xff0c;并表示接下来也会对所有用户开放。 另一边&#xff0c…

高可用集群之分布式文件系统

一、分布式文件系统和单机文件系统的区别&#xff1a;单机文件系统的分区只能被一台主机所挂载&#xff0c;不能同时被多台主机挂载使用&#xff0c;因为单机文件系统是通过系统内核层的锁机制来完成的&#xff0c;所以一个系统上可以有多个进程访问&#xff0c;但只能在一个时…

C#中基本知识

当数据转换到asp.net页面时&#xff0c;大部分都是以文本的形式存在的。有时候为了输出&#xff0c;单单使用显示或者隐式转换都是不行的&#xff0c;就需要本节说到的数据转换。 字符串输出&#xff1a; int intAge21; string strAgeintAge.ToString(); 转换DateTime值时&…

索引系列八--索引特性之有序难优化union

----UNION 是需要排序的drop table t1 purge;create table t1 as select * from dba_objects where object_id is not null;alter table t1 modify OBJECT_ID not null;drop table t2 purge;create table t2 as select * from dba_objects where object_id is not null;alter t…

OpenCV 实战:3 步实现图像降噪

来源 | 小白视觉志 头图 | 下载于视觉中国本文将展示如何通过三个简单的步骤来实现降噪。我们将使用机器学习训练的降噪模型&#xff0c;最好的降噪模型之一。程序可以判断图像是否有噪点吗&#xff1f;这应该是一个很有创意的想法&#xff0c;因为我们的降噪模型不够智能&…

一条数字链路连接的端口无法UP及后续相应故障的排除

故障现象1&#xff1a; 运营商检测线路正常&#xff0c;但是端口无法up。 解决办法&#xff1a; 1、翻转端口 2、将端口速率强制为1000M&#xff0c;全双工#speed 1000 #dup full 端口正常UP。 故障现象2&#xff1a; 线路丢包5%。 解决办法&#xff1a; 1、检查端口光功率&…

华为:HarmonyOS 即将开源!

整理 | 晋兆雨出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;5 月 24 日&#xff0c;在鸿蒙开发者创新大赛颁奖典礼上&#xff0c;华为消费者业务软件部总裁王成录宣布&#xff1a;HarmonyOS 将会开源开放&#xff0c;并在武汉大学等15个学校开展 HarmonyOS 课程。…

C#实现网段扫描

摘要 想必大家对小榕时光等扫描器都非常熟悉了&#xff0c;有没有自己写一个的冲动。最近微软推实施了.NET战略方案&#xff0c;C#是主推语言&#xff0c;你们是否有兴趣用C#来实现对局域网IP地址的扫描&#xff0c;尝试一下自己写的快乐&#xff0c;那么请跟我来。 正文 1.先介…

sbt配置nexus仓库

2019独角兽企业重金招聘Python工程师标准>>> 最近学习Scala&#xff0c;不可避免的要用到sbt。爱折腾的我把原本比较简单的事情搞的复杂了&#xff0c;来来回回搞了好久&#xff0c;记录下来&#xff0c;有同样爱折腾的盆友可以参考下。 sbt在windows下如果是默认安…

C#编程(十二)----------函数

类和结构 类和结构实际上都是创建对象的模板 ,每 个对象都包含数据 ,并 提供了处理和访问数据的方法。 类定义了类的每个对象 (称 为实例 )可 以包含什么数据和功能 。 例如 ,如 果 一 个类表示 一 个顾客 ,就可以定义字段 CustomerID、 FirstName、 LastNane和 Address,以 包含…

Linux很实用的命令查找软件安装目录

#whereis php #which php #php -v 查看版本号 差异自己去体会

Python 库突发 PyPI 危机!

‍‍整理 | 梦依丹出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;据 BleepingComputer 报道&#xff0c;Python 官方软件包存储库 PyPI 遭受了黑客攻击&#xff0c;攻击者通过注入垃圾邮件包的形式发起了洪水攻击。这些垃圾邮件及软件包用电影、电视节目名称命名&…