3.3 分支语句
分支语句用于实现分支结构程序设计。Java语言提供了两种分支结构:if分支语句和switch分支语句。
3.3.1 if语句
图3-2 单选条件语句执行过程
Java中的if语句有3种形式。
(1)单选条件语句
单选条件语句的语句格式为:
if(<表达式>)
<语句>
该语句的执行流程为:当if语句中的条件表达式为true时执行一组相关的语句,否则不执行语句,如图3-2所示。
说明:
①条件表达式必须用一对圆括号“()”括起来;
②语句体可以是一条语句,也可以是多条语句,若是多条语句,必须用一对花括号“{}”括起来构成一个复合语句。
【例3.1】输入两个整数a和b,输出其中较大的一个数。
流程图如图3-3所示,程序执行后的运行结果如图3-4所示。
图3-3 求两个数中的最大值流程图1
图3-4 求两个数中最大值的运算结果
(2)双选条件语句
双选条件语句的语句格式为:
if(<表达式>)
<语句1>
else
<语句2>
该语句的执行流程为:当if语句中的条件表达式为true时执行一组相关的语句,否则执行另一组相关的语句,如图3-5所示。
【例3.2】输入两个整数a和b,输出其中较大的一个数。
图3-5 双选条件语句执行过程
流程图如图3-6所示,程序运行结果如图3-4所示。
(3)多选条件语句
多选条件语句的语句格式为:
图3-6 求两个数中的最大值流程图2
【例3.3】有下列分段函数:
编写程序,输入x的值,输出y值。
流程图如图3-7所示,程序运行结果如图3-8所示。
图3-7 分段函数求值流程图1
图3-8 分段函数求值运行结果
2.if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套。其一般格式为:
【例3.4】有下列分段函数:
编写程序,输入x的值,输出y值。
流程图如图3-9所示,程序运行结果如图3-8所示。
图3-9 分段函数求值流程图2
在该程序中,内层的if语句嵌套在外层的if语句的if部分。if语句嵌套使用时,应当注意else与if的配对关系:else总是与其前面最近的还没有配对的if进行配对。
【例3.5】求3个整数a、b、c中的最大者,a、b、c由键盘输入。
流程图如图3-10所示,程序运行结果如图3-11所示。
图3-10 求3个数中最大数的流程图
图3-11 求3个数中最大数的运行结果
3.3.2 switch语句
在if语句中,布尔表达式的值只有true和false两种。Java提供一种可以提供更多选择的语句:switch语句,也称开关语句。
作用:实现多路分支程序。
语句格式
使用switch语句时需要注意以下几点。
1)表达式类型可为byte、char、short、int或enum类型,并且只能与常量进行比较,如果匹配成功,则执行case子句后面的语句序列。
2)每个case后面的常量表达式值必须互不相同。
3)一个case后可有多个语句(不必用花括号),程序自动顺序执行case后的所有语句;一个case后面也可以没有任何语句。
4)每个case后面的常量表达式只起语句标号的作用,每执行完一个case后面的语句后,程序会不加判断地自动执行下一个case后面的语句。所以,执行完一个case分支后,需使用break语句跳出switch语句,终止switch语句的执行。
5)default子句可选。当表达式的值与任何case子句中的常量都不匹配时,程序执行default子句后面的语句序列,若无default子句,则程序退出switch语句。
【例3.6】根据给定年、月,输出该月的天数。
程序运行结果如图3-12所示。
【例3.7】商店打折售货。购货金额数量越大,折扣越大。具体标准为(m:购货金额,d:折扣率):
m<250(元) d=0%
250≤m<500 d=5%
500≤m<1000 d=7.5%
1000≤m<2000 d=10%
m≥2000 d=15%
从键盘输入购货金额,计算实付的金额。
图3-12 例3.6运行结果图
分析:首先应找出购货金额与折扣率之间对应关系变化的规律。从题意已知,当购货金额m每变化250元或250元的倍数时,折扣率就会变化。用m/250来表示折扣率的分档情况,见表3-1。
表3-1 商店打折售货分档情况表
根据购货金额确定好折扣率后,再计算出实付金额。
程序运行结果如图3-13所示。
图3-13 打折程序运行结果