购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.2 if语句

视频讲解

在生活中,每个人都要做出各种各样的选择。例如,吃什么菜?走哪条路?找什么人?那么当程序遇到选择时,该怎么办呢?这时需要使用的就是选择结构语句。if语句是最基础的一种选择结构语句,它主要有3种形式,分别为if语句、if…else语句和if…else if…else多分支语句,本节将分别对它们进行详细讲解。

5.2.1 最简单的if语句

C#语言中使用if关键字来组成选择语句,其最简单的语法形式如下:

说明

使用if语句时,如果只有一条语句,省略{}是没有语法错误的,而且不影响程序的执行,但是为了程序代码的可读性,建议不要省略。

其中,表达式部分必须用()括起来,它可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式,如果表达式为真,则执行“语句块”,之后继续执行“下一条语句”;如果表达式的值为假,就跳过“语句块”,执行“下一条语句”,这种形式的if语句相当于汉语里的“如果……那么……”,其流程图如图5.4所示。

图5.4 if语句流程图

【例5.01】 使用if语句判断用户输入的数字是不是奇数,代码如下:( 实例位置:资源包\源码\05\5.01)

运行程序,当输入5时,效果如图5.5所示;当输入6时,效果如图5.6所示。

图5.5 奇数运行结果

图5.6 不是奇数的运行结果

说明

if语句后面如果只有一条语句时,可以不使用大括号{},例如下面的代码:

但是,不建议开发人员使用这种形式,不管if语句后面有多少要执行的语句,都建议使用大括号{}括起来,这样方便代码的阅读。

5.2.2 if…else语句

如果遇到只能二选一的条件,比如某个公司在发展过程中遇到了“扩张”和“求稳”的抉择,C#中提供了if…else语句解决类似问题,其语法如下:

使用if…else语句时,表达式可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式,如果满足条件,则执行if后面的语句块,否则,执行else后面的语句块,这种形式的选择语句相当于汉语里的“如果……否则……”,其流程图如图5.7所示。

图5.7 if…else语句流程图

【例5.02】 用if…else语句判断用户输入的分数是不是足够优秀,如果大于90,则表示优秀,否则,输出“希望你继续努力!”,代码如下: (实例位置:资源包\源码\05\5.02)

运行程序,当输入一个大于90的数时(如93),效果如图5.8所示;当输入一个小于90的数时(如87),效果如图5.9所示。

图5.8 输入大于90的运行结果

图5.9 输入小于90的运行结果

注意

在使用else语句时,else一定不可以单独使用,它必须和关键字if一起使用,例如下面的代码是错误的:

程序中使用if…else语句时,如果出现if语句多于else语句的情况,将会出现悬垂else问题:究竟else和哪个if相匹配呢?例如下面的代码:

如果遇到上面的情况,记住:在没有特殊处理的情况下,else永远都与最后出现的if语句相匹配,即:上面代码中的else是与if(y>x)语句相匹配的。如果要改变else语句的匹配对象,可以使用大括号,例如将上面代码修改如下:

如果修改成这样,else将与if(x>1)语句相匹配。

技巧

建议总是在if后面使用大括号{}将要执行的语句括起来,这样可以避免程序代码混乱。

5.2.3 if…else if…else语句

大家平时在网上购物付款时通常都有多种选择,如图5.10所示。

图5.10 购物时的付款页面

图5.10中提供了5种付款方式,这时用户就需要从多个选项中选择一个。在开发程序时,如果遇到多选一的情况,则可以使用if…else if…else语句,该语句是一个多分支选择语句,通常表现为“如果满足某种条件,进行某种处理,否则,如果满足另一种条件,则执行另一种处理……”。if…else if…else语句的语法格式如下:

使用if…else if…else语句时,表达式部分必须用()括起来,它可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式,如果表达式为真,执行语句;而如果表达式为假,则跳过该语句,进行下一个else if的判断,只有在所有表达式都为假的情况下,才会执行else中的语句。if…else if…else语句的流程图如图5.11所示。

图5.11 if…else if…else语句的流程图

注意

if和else if都需要判断表达式的真假,而else则不需要判断;另外,else if和else都必须跟if一起使用,不能单独使用。

【例5.03】 使用if…else if…else多分支语句实现根据用户输入的年龄输出相应信息提示的功能,代码如下: (实例位置:资源包\源码\05\5.03)

运行程序,输入一个年龄值,按回车键,即可输出相应的信息提示,效果如图5.12所示。

图5.12 if…else if…else多分支语句的使用

技巧

使用if选择语句时,尽量遵循以下原则。

(1)使用bool变量作为判断条件,假设bool变量flag,较为规范的书写:

不符合规范的书写:

(2)使用浮点类型变量与0值进行比较时,规范的书写格式如下:

不符合规范的书写格式如下:

(3)使用if(1==a)这样的书写格式可以防止错写成if(a=1)这种形式,以避免逻辑上的错误。

5.2.4 if语句的嵌套

前面讲过3种形式的if选择语句,这3种形式的选择语句之间都可以进行互相嵌套。例如,在最简单的if语句中嵌套if…else语句,形式如下:

例如,在if…else语句中嵌套if…else语句,形式如下:

说明

if选择语句可以有多种嵌套方式,开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要注意逻辑关系的正确处理。

【例5.04】 通过使用嵌套的if语句实现判断用户输入的年份是不是闰年的功能,代码如下: (实例位置:资源包\源码\05\5.04)

说明

判断闰年的方法是“四年一闰,百年不闰,四百年再闰”。程序使用嵌套的if语句对这3个条件逐一判断,第5行代码首先判断年份能否被4整除iYear%4==0,如果不能整除,输出字符串“这不是闰年”,如果能整除,第7行代码继续判断能否被100整除iYear%100==0,如果不能整除,输出字符串“这是闰年”,如果能整除,第9行代码继续判断能否被400整除iYear%400==0,如果能整除,输出字符串“这是闰年”,如果不能整除,输出字符串“这不是闰年”。

运行程序,当输入一个闰年年份时(如2000),效果如图5.13所示;当输入一个非闰年年份时(如2017),效果如图5.14所示。

图5.13 输入闰年年份的结果

图5.14 输入非闰年年份的结果

说明

(1)使用if语句嵌套时,要注意else关键字要和if关键字成对出现,并且遵守临近原则,即else关键字总是和自己最近的if语句相匹配。

(2)在进行条件判断时,应该尽量使用复合语句,以免产生二义性,导致运行结果和预想的不一致。 Aeog6cWqLjk5nbATG4tmB+pGbd2e1ePgzfmWgaOPlT8LoJ5G5F0vjPlmS+jgLYU+

点击中间区域
呼出菜单
上一章
目录
下一章
×