首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【小雨学编程之C#】19.7 流程控制语句 do while

上节内容中我们通过两个例子巩固了while语句这个知识点,本节内容我们继续学习新的循环语句do while。

在学习新的内容之前,我们简单回顾一下上节内容中的一个例子,模拟报价:

在这个例子中,我们首先创造了一个无限循环条件while(true),然后在这个无限循环中进行我们对用户输入的判断,不过有些小伙伴质疑,我们的代码中有一个部分不合理,我们的商品和价格一一对应,但是如果我们的商品中有赠品,赠品的价格为0的话,那么switch的default部分就包含了赠品,那么如果赠品的价格也是要输出的话,这段代码就不适合了,不过没关系,我们敲代码就是实现和改进的过程,我们看看怎么改进一下这段代码:

在我们的代码中:int _price的作用是提取对应商品的价格,并且通过在default部分中将_price赋值0,从而让它在三元运算符中充当判断条件和价格输出两个角色。

不过很明显当我们的商品中有赠品的话,_price的判断角色就失效了,这时候,我们需要专门创立一个判断角色即可:

这时我们看到,我们首先创造一个判断条件_in,默认为true,当用户输入商品名称不在我们的商品中时候,将_in设置为false,这样这个_in就可以在输出的三元运算符中充当判断角色喽,这样我们的switch就可以涵盖所有的商品价格啦!

只是,在这部分的程序中,有个不满足的地方,现有程序结束循环的条件是,在无限循环内判断用户是否输入了exit,然后用break强制结束循环。但是我们通常的思路应当是如果用户输入的是exit循环就不执行,比方说while(_s!="exit"),显然通常思路显得更清晰一些,而现有方式是对通常思路的一种转化,稍显复杂。于是我们对代码进行简单改造:

但是运行的时候我们发现了一个bug

也就是这时我们输入exit后系统会多出一个"您输入的商品不存在"的多余的输出,这样的话我们想办法让用户输入exit的时候不执行这个输出即可:

嘿嘿,这样就成啦。

但是精益求精的小伙伴还是不满意,他们提出一种情况,如果用户第一次进入程序后就直接输入exit,那么岂不是进行while的第二次循环的时候,才进行_s!="exit"的判断吗,但是我们看现有的代码,读取用户的输入是在while循环中,我们进行_s!="exit"成绩的判断前提是用户需要输入exit,起码要用户输入呀,如果想让用户先输入再进行while判断的话,我们就需要在while外面进行一次用户输入读取,也就是:

但是很明显,这需要我们添加两次监测用户输入,一次在while外面来监测用户第一次输入,一次是在while之中,用来检测循环中的用户输入,很明显,这部分的代码是重复的,这可怎么办呢?

这个好办,因为我们有do while,它的基本语法是

do{

循环执行的代码

}while(判断条件);

do while的意思是,先执行do后面大括号中的内容,然后判断while后面小括号中的内容,如果while后面小括号中的内容成立继续循环,如果不成立直接结束循环。

那么这就好办了:

这时循环先执行用户输入检测,这样的话,即使用户第一次输入exit,程序也是立马结束,不会像while循环一样,第一次输入exit需要第二次循环才判断结束!

不过这里需要再次强调一下,while和do while的区别是,while先判断后执行循环;do while是先执行循环内容后判断。也就是do while至少执行一次循环内容。

屏幕前的小伙伴,你们学会了吗!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210319A0EET000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券