![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=1738883488-9mWyt2qrJco9wVBtNAkb4LucuIJ1x5Xf-0-ad33b302cafb07c84ac4ea981694c5e2)
在上述格式中,表达式为逻辑表达式。当表达式成立时,最终的结果为true,大括号内的语句块才会执行。如果表达式不成立,语句块就不会被执行,直接跳转到语句块之外而执行后面的语句。使用方式如示例4-1所示。
【示例4-1】if语句基本使用
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P59_51790.jpg?sign=1738883488-aSEvqoVtM2IzIu8bJ1nn3wF4olYeTnYv-0-95f6d074266c7db98303e885cfed2679)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P60_51796.jpg?sign=1738883488-55jkEKYVN1ZinYIPeMSMfAVRaMDUtVwu-0-8b8f65686d313701f65dafcc121f682d)
从示例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=1738883488-LeljOPqLjyfpMdJhB3qafIN90Luy9R35-0-7e117bd010e3d9eb4f87a5336e463f2a)
在上面的结构中,当逻辑表达式成立时,程序执行语句块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=1738883488-Rry2j3SmNuEXf3a3OgjcQd58jcfJKmyJ-0-37d6f3f50e66fd35cddbd0b55d6bb2d9)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P61_51799.jpg?sign=1738883488-007c4lT9p5m9ZTrltGWAcKbfB3EAbIVw-0-6c5bf00a2d68314f53907e1c4713f1b0)
通过示例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=1738883488-GQCqQVk6liIDZj86p8WLQ4Da3iy2IW0k-0-57a32a82e5d9e9dc7526ea4550d7096b)
上面表达式的执行过程如图4.1所示。
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P61_6856.jpg?sign=1738883488-Kt1gybSQOnrvI8tzPea5n2MSIRm0pRTr-0-b8e7488518c09302cc8e7cac8b0dc7a4)
图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=1738883488-ALc4lCAz2m18RiKiUtIy6keGcOgIxtk5-0-31dd47a5a40a805799d625c093d23d70)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P62_51804.jpg?sign=1738883488-3xzeGnoATtTMkSezui2xaaKGosCSA0Gv-0-d05b3465566114fd6494b269493de6b3)
通过示例4-3可以看出,在输入了分数后,程序会根据输入的分数依次判断成绩属于哪个等级。当都不符合时,就可以判定成绩属于不及格的等级。
4.1.4 switch语句
在条件结构中,还存在一类特殊的语句,即switch语句结构。该结构在进行判断时并不像if结构一样判断条件是布尔型,也不是一个范围,switch结构的判断条件是常量值,基本用法如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P63_51805.jpg?sign=1738883488-xgWIM8K9ydpENKJmptt88YB79bMbZwP1-0-245d1a1359b919a19fa40109842b6ee3)
在上面的结构中,首先比较表达式是否和常量表达式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=1738883488-SUN0ff7Veg8ORHV8nuQu8REwcnfBhPzl-0-8d4c3db68711fd2413106830832de411)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P64_51807.jpg?sign=1738883488-3SH3GivU43GgCaM7nZguFukEDfJ213so-0-5b319a714215cb5a331cf3354caab426)
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=1738883488-13ukyP5CnolicYHm39UNz8t58Bzce6i7-0-5850470713926c0b2b5ef2277f11f532)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P64_51809.jpg?sign=1738883488-OCOfa0vRbKV38qcpIiuLATOH2kuyCz9R-0-163f2731a43c745377d800b1da53e3a5)
在示例4-5中,展示了使用String类型的数值作为case语句的表达式,从而丰富了switch语句的使用范围,便利了在实际过程中的操作。