Java程序设计案例教程
上QQ阅读APP看书,第一时间看更新

3.3 分支语句

分支语句用于实现分支结构程序设计。Java语言提供了两种分支结构:if分支语句和switch分支语句。

3.3.1 if语句

978-7-111-60245-3-Chapter03-4.jpg

图3-2 单选条件语句执行过程

Java中的if语句有3种形式。

(1)单选条件语句

单选条件语句的语句格式为:

if(<表达式>)

<语句>

该语句的执行流程为:当if语句中的条件表达式为true时执行一组相关的语句,否则不执行语句,如图3-2所示。

说明:

①条件表达式必须用一对圆括号“()”括起来;

②语句体可以是一条语句,也可以是多条语句,若是多条语句,必须用一对花括号“{}”括起来构成一个复合语句。

【例3.1】输入两个整数a和b,输出其中较大的一个数。

978-7-111-60245-3-Chapter03-5.jpg

978-7-111-60245-3-Chapter03-6.jpg

流程图如图3-3所示,程序执行后的运行结果如图3-4所示。

978-7-111-60245-3-Chapter03-7.jpg

图3-3 求两个数中的最大值流程图1

978-7-111-60245-3-Chapter03-8.jpg

图3-4 求两个数中最大值的运算结果

(2)双选条件语句

双选条件语句的语句格式为:

if(<表达式>)

<语句1>

else

<语句2>

该语句的执行流程为:当if语句中的条件表达式为true时执行一组相关的语句,否则执行另一组相关的语句,如图3-5所示。

【例3.2】输入两个整数a和b,输出其中较大的一个数。

978-7-111-60245-3-Chapter03-9.jpg

图3-5 双选条件语句执行过程

978-7-111-60245-3-Chapter03-10.jpg

978-7-111-60245-3-Chapter03-11.jpg

流程图如图3-6所示,程序运行结果如图3-4所示。

(3)多选条件语句

多选条件语句的语句格式为:

978-7-111-60245-3-Chapter03-12.jpg

978-7-111-60245-3-Chapter03-13.jpg

图3-6 求两个数中的最大值流程图2

【例3.3】有下列分段函数:

978-7-111-60245-3-Chapter03-14.jpg

编写程序,输入x的值,输出y值。

978-7-111-60245-3-Chapter03-15.jpg

流程图如图3-7所示,程序运行结果如图3-8所示。

978-7-111-60245-3-Chapter03-16.jpg

图3-7 分段函数求值流程图1

978-7-111-60245-3-Chapter03-17.jpg

图3-8 分段函数求值运行结果

2.if语句的嵌套

在if语句中又包含一个或多个if语句称为if语句的嵌套。其一般格式为:

978-7-111-60245-3-Chapter03-18.jpg

【例3.4】有下列分段函数:

978-7-111-60245-3-Chapter03-19.jpg

编写程序,输入x的值,输出y值。

978-7-111-60245-3-Chapter03-20.jpg

流程图如图3-9所示,程序运行结果如图3-8所示。

978-7-111-60245-3-Chapter03-21.jpg

图3-9 分段函数求值流程图2

在该程序中,内层的if语句嵌套在外层的if语句的if部分。if语句嵌套使用时,应当注意else与if的配对关系:else总是与其前面最近的还没有配对的if进行配对。

【例3.5】求3个整数a、b、c中的最大者,a、b、c由键盘输入。

978-7-111-60245-3-Chapter03-22.jpg

流程图如图3-10所示,程序运行结果如图3-11所示。

978-7-111-60245-3-Chapter03-23.jpg

图3-10 求3个数中最大数的流程图

978-7-111-60245-3-Chapter03-24.jpg

图3-11 求3个数中最大数的运行结果

3.3.2 switch语句

在if语句中,布尔表达式的值只有true和false两种。Java提供一种可以提供更多选择的语句:switch语句,也称开关语句。

作用:实现多路分支程序。

语句格式

978-7-111-60245-3-Chapter03-25.jpg

978-7-111-60245-3-Chapter03-26.jpg

使用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】根据给定年、月,输出该月的天数。

978-7-111-60245-3-Chapter03-27.jpg

978-7-111-60245-3-Chapter03-28.jpg

978-7-111-60245-3-Chapter03-29.jpg

程序运行结果如图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%

从键盘输入购货金额,计算实付的金额。

978-7-111-60245-3-Chapter03-30.jpg

图3-12 例3.6运行结果图

分析:首先应找出购货金额与折扣率之间对应关系变化的规律。从题意已知,当购货金额m每变化250元或250元的倍数时,折扣率就会变化。用m/250来表示折扣率的分档情况,见表3-1。

3-1 商店打折售货分档情况表

978-7-111-60245-3-Chapter03-31.jpg

根据购货金额确定好折扣率后,再计算出实付金额。

978-7-111-60245-3-Chapter03-32.jpg

978-7-111-60245-3-Chapter03-33.jpg

程序运行结果如图3-13所示。

978-7-111-60245-3-Chapter03-34.jpg

图3-13 打折程序运行结果