4.1 条件结构
在实际生活中,我们会遇到各种选择。比如在买房子的时候,需要选择公寓还是商品房,需要选择学区房还是普通住房,需要选择期房、现房还是二手房。在进行编程时,实现这些不同的选择就需要使用条件语句。本节将重点介绍如何使用条件语句。
4.1.1 if语句
最基本的条件语句是if语句,基本格式如下:
在上述格式中,表达式为逻辑表达式。当表达式成立时,最终的结果为true,大括号内的语句块才会执行。如果表达式不成立,语句块就不会被执行,直接跳转到语句块之外而执行后面的语句。使用方式如示例4-1所示。
【示例4-1】if语句基本使用
程序编译后,运行结果如下:
从示例4-1可以看出,在程序中有多少种可能性存在,就需要编写多少个if语句来对所有可能出现的情况进行处理。然而这种方式在书写时有一点烦琐,需要使用if else语句来弥补这种缺陷。
4.1.2 if else结构
if else语句弥补了if语句带来的缺陷,增加了当表达式不成立时程序的处理方式。其基本用法如下所示:
在上面的结构中,当逻辑表达式成立时,程序执行语句块1;当表达式不成立时,不再像if语句那样执行其他的内容,而是执行else语句中的语句块2。这样在逻辑上就实现了处理方式的完整性。if else语句的使用如示例4-2所示。
【示例4-2】if else语句基本使用
程序编译后,运行结果如下:
通过示例4-2的运行结果可以看出,相对于示例4-1来说,示例4-2增加了else语句,实现了当表达式不成立时数据的处理方式,增加了逻辑的完整性。
4.1.3 if else语句嵌套
在实际的编程中,常常会出现多重条件同时存在的情况。这就需要使用if else语句的嵌套式调用。if else语句的嵌套方式如下所示:
上面表达式的执行过程如图4.1所示。
图4.1 嵌套调用示意图
图4.1表示了if else语句嵌套调用时的执行过程。当表达式1成立时,执行语句块1。如果表达式1不成立,那么就会判断表达式2是否成立。如果表达式2成立,就会执行语句块2;否则就再去判断后面的表达式是否成立。直至判断表达式n是否成立。如果表达式n成立,那么语句块n就会被执行,否则就会执行最后一个else中的语句块n+1。下面使用示例来展示if else语句的嵌套使用。
在学校考试结束后,可以根据分数得到“优”“良”“中”“不及格”4种等级,划分规则如下:
● 成绩大于等于90分,输出“优”。
● 成绩大于等于80分且小于90分,输出“良”。
● 成绩大于等于60分且小于80分,输出“中”。
● 成绩小于60分,输出“不及格”。
参考示例如示例4-3所示。
【示例4-3】if语句基本使用
程序编译后,运行结果如下:
通过示例4-3可以看出,在输入了分数后,程序会根据输入的分数依次判断成绩属于哪个等级。当都不符合时,就可以判定成绩属于不及格的等级。
4.1.4 switch语句
在条件结构中,还存在一类特殊的语句,即switch语句结构。该结构在进行判断时并不像if结构一样判断条件是布尔型,也不是一个范围,switch结构的判断条件是常量值,基本用法如下:
在上面的结构中,首先比较表达式是否和常量表达式1一致,如果一致就执行语句块1;否则继续和常量表达式2进行比较,如果一致就执行语句块2;否则继续往下比较。如果所有的常量表达式都和表达式不一致,就会执行default中的语句块3。
使用switch结构可以方便地实现从键盘输入1~7之间的任意数字,分别输出对应星期几。参考代码如示例4-4所示。
【示例4-4】switch语句基本使用
程序编译后,运行结果如下:
JDK 7.0以后表达式的值除了可以是基本数据类型的byte、short、int和char以外,还可以是String类型。使用String类型的switch语句使用如示例4-5所示。
【示例4-5】switch语句使用String类型作为case表达式
程序编译后,运行结果如下:
在示例4-5中,展示了使用String类型的数值作为case语句的表达式,从而丰富了switch语句的使用范围,便利了在实际过程中的操作。