1、单元 03 分支结构单元目标 理解程序常用的结构; 掌握 if 语句结构; 掌握 if-else 语句结构; 掌握多重条件语句结构; 掌握 switch 语句结构。学习任务1.任务描述编写一个计算某个月份的天数程序,请用 if-else 条件语句和 switch 分支语句分别实现。要求根据用户输入的月份,判断出月份所包含的天数。2.运行结果知识准备3.1 顺序结构程序至上而下逐行执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾。这种结构如图 1-22 所示:图 1-22 顺序结构的基本流程顺序结构在程序设计中是最常使用到的结构,在程序中扮演了非常重要的角色,因为大部分的程序基本上都
2、是依照这种由上而下的流程来设计。计算月份天数程序设计计算月份天数程序设计3.2 选择结构3.2.1 if 语句结构If 语句结构的格式如下所示:if (判断条件)语句 1 ;语句 2 ;语句 3 ;若是在 if 语句主体中要处理的语句只有 1 个,可省略左、右大括号。当判断条件的值不为假时,就会逐一执行大括号里面所包含的语句,if 语句的流程图如图 1-23 所示:图 1-23if 结构的流程图【实例 1-4】if 条件语句示例。 【源代码】public static void main(String args)int x = 10;if(x = 8)/x 的值为 10,条件表达式的值为 fl
3、ase,所以不执行下面语句System.out.print(x=8);3.2.2 if-else 语句结构当程序中存在含有分支的判断语句时,就可以用 if-else 结构处理。当判断条计算月份天数程序设计件成立,即执行 if 语句主体;判断条件不成立时,则会执行 else 后面的语句主体。if-else 结构的格式如下:if (判断条件)语句主体 1 ;else语句主体 2;若是在 if 语句或 else 语句主体中要处理的语句只有一个,可以将左、右大括号去除。ifelse 语句的流程图如图 1-24 所示:图 1-24 if-else 结构的流程图【实例 1-5】声明一个整型变量 a,并给其
4、赋初值 5,在程序中判断 a 是奇数还是偶数,再将判断的结果输出。【源代码】public static void main(String args)int a = 5 ;if(a%2=1)System.out.println(a+ 是奇数!);elseSystem.out.println(a+ 是偶数!);程序运行结果为:5 是奇数!计算月份天数程序设计3.2.3 多重条件语句结构如果需要在 if-else 里判断多个条件时,就需要 if-else if- else 语句了,其格格式式如下:if (条件判断 1)语句主体 1 ;else if (条件判断 2)语句主体 2 ;. / 多个 el
5、se if()语句else语句主体 3 ;【实例 1-6】多重 if 结构实例。【源代码】public static void main(String args)int x = 1 ;if(x=1)System.out.println(x = = 1);else if(x=2)System.out.println(x = = 2);else if(x=3)System.out.println(x = = 3);elseSystem.out.println(x 3);程序运行结果为:x=1。3.3 分支结构switch 语句可以将多选一的情况简化, 而使程序简洁易懂,在部分中将要介绍如何使用sw
6、itch语句以及它的好伙伴break语句; 此外, 也要讨论在switch语句中如果不使用 break 语句会出现的问题。首先,先来了解 switch 语句该如计算月份天数程序设计何使用。要在许多的选择条件中找到并执行其中一个符合判断条件的语句时,除了可以使用 if.else 不断地判断之外,也可以使用另一种更方便的方式即多重选择switch 语句。 使用嵌套 if-else 语句最常发生的状况, 就是容易将 if 与 else配对混淆而造成阅读及运行上的错误。使用 swtich 语句则可以避免这种错误的发生。switch 语句的格式格式如下:switch (表达式)case 选择值 1 :语
7、句主体 1 ;break ;case 选择值 2 :语句主体 2 ;break ;case 选择值 n :语句主体 n ;break ;default:语句主体 ;注解:(1)switch 语句先计算括号中表达式的结果。(2) 根据表达式的值检测是否符合执行 case 后面的选择值, 若是所有 case的选择值皆不符合, 则执行 default 所包含的语句, 执行完毕即离开 switch 语句。(3)如果某个 case 的选择值符合表达式的结果,就会执行该 case 所包含的语句,一直遇到 break 语句后才离开 switch 语句。(4) 若是没有在若是没有在 case 语句结尾处加上语
8、句结尾处加上 break 语句语句, 则会一直执行到 switch语句的尾端才会离开 switch 语句。 break 语句在下面的单元中会介绍到, 读者只要先记住 break 是跳出语句就可以了。(5)若是没有定义 default 该执行的语句,则什么也不会执行,直接离开switch 语句。根据上面的描述,可以绘制出如图 4-4 所示的 switch 语句流程图:图 1-25 switch 结构的流程图【实例 1-7】switch 结构实例。【源代码】public static void main(String args)int a = 100 , b = 7 ;char oper =/ ;
9、switch(oper) / 用 switch 实现多分支语句case +:System.out.println(a+ + +b+ = +(a+b);break ;case -:System.out.println(a+ - +b+ = +(a-b);break ;case *:System.out.println(a+ * +b+ = +(a*b);break ;case /:System.out.println(a+ / +b+ = +(float)a/b);break ;default:System.out.println(未知的操作!);程序运行结果为:100/7=14.285714。
10、计算月份天数程序设计任务实施1实现思路(1)获得用户在命令行输入的月份,并转换为整形;(2)使用 if 分支或 switch 判断,2 月 28 天,1 月、3 月、5 月、7 月、8 月、10 月、12 月的天数是 31 天,其他月份是 30 天。2程序代码(1)使用 if-else 条件语句实现的代码public static void main(String args)int month;month = Integer.parseInt(args0);/得到用户输入的月份if(month = 2) /使用 IF 分支控制判断月份拥有的天数System.out.print(month +
11、月有 28 天);else if(month = 1 | month = 3 | month = 5 | month=7 |month = 8 | month = 10 | month =12)System.out.print(month + 月有 31 天);elseSystem.out.print(month + 月有 30 天);(2)使用 switch 语句实现的代码public static void main(String args)int month;month = Integer.parseInt(args0);/得到输入月份switch(month)case 2:System
12、.out.print(month + 月有 28 天);break;case 1:计算月份天数程序设计计算月份天数程序设计case 3:case 5:case 7:case 8:case 10:case 12:System.out.print(month + 月有 31 天);break;default:System.out.print(month + 月有 30 天);break;如果输入 4,程序运行结果为:4 月有 30 天。任务拓展在任务中,存在一个 2 月份闰年和非闰年天数不同的问题,要实现准确的天数确定我们需要对给定年数判定是否是闰年,判定公历闰年应遵循的一般规律为:四年一闰,百年
13、不闰,四百年再闰。【实例 1-8】闰年的判定算法【源代码】public static void main(String args)int year = Integer.parseInt(args0);int m =year % 100;if(m =0)if(year % 400) = 0)System.out.print(year+年是闰年,2 月份有 29 天);elseSystem.out.print(year+年不是闰年,2 月份有 28 天); elseif(year % 4) = 0)System.out.print(year+年是闰年,2 月份有 29 天);elseSystem.
14、out.print(year+年不是闰年,2 月份有 28 天);计算月份天数程序设计如果输入 2012,程序运行结果为:2012 年是闰月,2 月份有 29 天。任务实训1.实训目的 能较熟练的掌握上机步骤和程序开发的全过程; 基本掌握分支流程控制结构; 能熟练 if、if-else、if-else if 条件结构; 基本理解 switch 分支结构。2.实训内容仿照“任务四” ,计算个人所得税。设某人月收入为 x 元,假设个人所得税征收方法如下:当 x=3500 时,不需要交税;当 3500 x5000 时,应征税为(x-3500)* 3%;当 5000 x8000 时,应征税为(x-5000)* 10% + 1500 * 3%;当 8000 x12500 时,应征税为(x-8000)* 20% + 3000 * 10% + 1500 *3%;当 12500 x15000 时,应征税为(x-12500)* 25% + 4500 * 20% + 3000* 10% + 1500 * 3%;当 15000 x 时,应征税为(x-15000)*30% + 2500 * 25% + 4500 * 20% +3000 * 10% + 1500 * 3%;计算月份天数程序设计