![Java编程从零开始学(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/137/29977137/b_29977137.jpg)
4.1 条件结构
在实际生活中,我们会遇到各种选择。比如在买房子的时候,需要选择公寓还是商品房,需要选择学区房还是普通住房,需要选择期房、现房还是二手房。在进行编程时,实现这些不同的选择就需要使用条件语句。本节将重点介绍如何使用条件语句。
4.1.1 if语句
最基本的条件语句是if语句,基本格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P59_51789.jpg?sign=1739157053-EOxKt2PFoFWG1a8XIY2rcFctfHiFSsnw-0-9ea68522bb200b95eec51a8bb9968962)
在上述格式中,表达式为逻辑表达式。当表达式成立时,最终的结果为true,大括号内的语句块才会执行。如果表达式不成立,语句块就不会被执行,直接跳转到语句块之外而执行后面的语句。使用方式如示例4-1所示。
【示例4-1】if语句基本使用
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P59_51790.jpg?sign=1739157053-YZexXAifFBDe2ot9DPsl5gaNuWPAXhue-0-06f76882ab9d44810e91b71c02b0c483)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P60_51796.jpg?sign=1739157053-nX5mkSjgwpaykpPcIjw9IM01zlhNMFAa-0-f9ff40fb0ed8a2035d0eba1462fcfc75)
从示例4-1可以看出,在程序中有多少种可能性存在,就需要编写多少个if语句来对所有可能出现的情况进行处理。然而这种方式在书写时有一点烦琐,需要使用if else语句来弥补这种缺陷。
4.1.2 if else结构
if else语句弥补了if语句带来的缺陷,增加了当表达式不成立时程序的处理方式。其基本用法如下所示:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P60_51797.jpg?sign=1739157053-UTZxCPPEDok8dET72Ryf5oo8HlvYvZEQ-0-10e0908b13c76323e044498623d69b3e)
在上面的结构中,当逻辑表达式成立时,程序执行语句块1;当表达式不成立时,不再像if语句那样执行其他的内容,而是执行else语句中的语句块2。这样在逻辑上就实现了处理方式的完整性。if else语句的使用如示例4-2所示。
【示例4-2】if else语句基本使用
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P60_51798.jpg?sign=1739157053-BjSKv91kNixCgA1Odse1J1xp67TKEcyx-0-96b12550aa9c003ee952794c72a96599)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P61_51799.jpg?sign=1739157053-sHW6QGn0WgNdm4J1T6TFtYWfkBLDS597-0-25878a94de12768afba4a7d57194b34d)
通过示例4-2的运行结果可以看出,相对于示例4-1来说,示例4-2增加了else语句,实现了当表达式不成立时数据的处理方式,增加了逻辑的完整性。
4.1.3 if else语句嵌套
在实际的编程中,常常会出现多重条件同时存在的情况。这就需要使用if else语句的嵌套式调用。if else语句的嵌套方式如下所示:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P61_51800.jpg?sign=1739157053-CBsavgVE8zTGfzUNMTYV2mglH284RoeG-0-7e52935249a78bcda5096e2aa3fcb06b)
上面表达式的执行过程如图4.1所示。
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P61_6856.jpg?sign=1739157053-nzXQ1BGFuZVWXmZA19t3w0k8NeczhhAy-0-8c77864b05ba9ab358930e9b67482648)
图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语句基本使用
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P62_51803.jpg?sign=1739157053-nVDaKjRnF4V8uIYSxDaJfE00EjkdLDN9-0-c3b3d238c33c7d857c4189226235a3f0)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P62_51804.jpg?sign=1739157053-qwmX5VOiA2VgHcwgbBlXDQiTVJaNvlab-0-e8218df22558e2213ba4a84ef0b1f2d4)
通过示例4-3可以看出,在输入了分数后,程序会根据输入的分数依次判断成绩属于哪个等级。当都不符合时,就可以判定成绩属于不及格的等级。
4.1.4 switch语句
在条件结构中,还存在一类特殊的语句,即switch语句结构。该结构在进行判断时并不像if结构一样判断条件是布尔型,也不是一个范围,switch结构的判断条件是常量值,基本用法如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P63_51805.jpg?sign=1739157053-eqw5XMpVx8eZWWdalteVt0f5JdwGthpN-0-feade86299ffca3f398ca814fdee9201)
在上面的结构中,首先比较表达式是否和常量表达式1一致,如果一致就执行语句块1;否则继续和常量表达式2进行比较,如果一致就执行语句块2;否则继续往下比较。如果所有的常量表达式都和表达式不一致,就会执行default中的语句块3。
使用switch结构可以方便地实现从键盘输入1~7之间的任意数字,分别输出对应星期几。参考代码如示例4-4所示。
【示例4-4】switch语句基本使用
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P63_51806.jpg?sign=1739157053-J5O5NGXsAcqJoYtDYjHDGHxL3tda1fTx-0-379a59c9f1b6f447ce3c48007619fb04)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P64_51807.jpg?sign=1739157053-ysP1E0dyRhnYYCz5R4FDpR3Ns2dtn0mi-0-e8c14ac466331a6bf3651353f833fcf6)
JDK 7.0以后表达式的值除了可以是基本数据类型的byte、short、int和char以外,还可以是String类型。使用String类型的switch语句使用如示例4-5所示。
【示例4-5】switch语句使用String类型作为case表达式
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P64_51808.jpg?sign=1739157053-1JukUUGImL58B06ozY1sJsN8Up7M6WwC-0-31396080fc6d595ba0e3ff9bdb1b41d5)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P64_51809.jpg?sign=1739157053-tERfPOJXuBa8VoiwS8j6zAEUDiN2MzrH-0-1fda23310c8d27b75b55f2752e17557f)
在示例4-5中,展示了使用String类型的数值作为case语句的表达式,从而丰富了switch语句的使用范围,便利了在实际过程中的操作。