1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第四章,复杂选择结构,本章目标,掌握多重,if,和嵌套,if,选择结构,掌握,switch,选择结构,使用,if,判断和输出语句进行异常处理,4.1,多重,if,选择结构,使用,多重,if,选择结构,将成绩分成几个连续区间判断。使用单个,if,选择结构无法完成,使用多个,if,选择结构很麻烦,1,、对学员的结业考试成绩评测,成绩,=90,:优秀,成绩,=80,:良好,成绩,=60,:中等,成绩,=90),System.out.println(优秀);,else if,(score=80),System.
2、out.println(良好);,else if,(score=60),System.out.println(中等);,else,System.out.println(差);,大于等于,90,分,大于等于,60,分,小于,80,分,小于,60,分,大于等于,80,分,小于,90,分,演示示例,1,:使用多重,if,选择结构,使用多重,if,选择结构解决问题,1,4.1,多重,if,选择结构,2、我想买车,买什么车决定于我在银行有多少存款,如果我的存款超过500万,我就买凯迪拉克,否则,如果我的存款超过100万,我就买帕萨特,否则,如果我的存款超过50万,我就买依兰特,否则,如果我的存款超过10
3、万,我就买奥托,否则,我买捷安特,4.1,多重,if,选择结构,int money=52;/我的存款,单位:万元,if(money=500),System.out.println(太好了,我可以买凯迪拉克);,else if(money=100),System.out.println(不错,我可以买辆帕萨特);,else if(money=50),System.out.println(我可以买辆依兰特);,else if(money=10),System.out.println(至少我可以买个奥托);,else,System.out.println(看来,我只能买个捷安特了);,各个条件的顺序
4、可以任意排列吗?,演示示例,2,:使用多重,if,选择结构,使用多重,if,选择结构解决问题,2,4.1,多重,if,选择结构,4.2,嵌套,if,选择结构,使用,嵌套,if,选择结构,要判断是否能够进入决赛,在确定进入决赛的情况下,还要判断是进入男子组,还是进入女子组,3,、学校举行运动会,百米赛跑跑入,10,秒内的学生有资格进决赛,根据性别分别进入男子组和女子组,什么是嵌套,if,选择结构,if,(条件,1),if,(条件,2),代码块,1,else,代码块,2,else,代码块,3,内层选择结构,4.2,嵌套,if,选择结构,流程图,if(score=10),if(gender.equa
5、ls(男),System.out.println(进入男子组决赛!);,else if(gender.equals(女),System.out.println(进入女子组决赛!);,else,System.out.println(淘汰!);,外层选择结构,内层选择结构,if,结构书写规范,为了使,if,结构更加清晰、,避免执行错误,,应该把每个,if,或,else,包含的代码块都用大括号括起来,相匹配的一对,if,和,else,应该左对齐,内层的,if,结构相对于外层的,if,结构要有一定的缩进,演示示例,3,:使用嵌套,if,选择结构,使用嵌套,if,选择结构解决问题,3,4.2,嵌套,if
6、选择结构,4.3 switch,选择结构,该问题属于等值判断,解决方法:,使用多重,if,选择结构实现,使用,switch,选择结构解决,4,、韩嫣参加计算机编程大赛,如果获得第一名,将参加麻省理工大学组织的,1,个月夏令营,如果获得第二名,将奖励惠普笔记本电脑一部,如果获得第三名,将奖励移动硬盘一个,否则,不给任何奖励,switch,(,表达式,),case,常量,1:,语句,;,break,;,case,常量,2:,语句,;,break,;,default,:,语句,;,计算表达式的值,如果等于常量,1,如果等于常量,2,如果没有找到匹配的值,什么是,switch,选择结构,4.3 sw
7、itch,选择结构,int mingCi=1;,switch,(mingCi),case,1:,System.out.println(,参加麻省理工大学组织的1个月夏令营,);,break,;,case,2:,System.out.println(,奖励惠普笔记本电脑一部,);,break,;,case,3:,System.out.println(,奖励移动硬盘一个,);,break,;,default,:,System.out.println(,没有任何奖励,);,第一名的情况下,第二名的情况下,第三名的情况下,其他情况下,演示示例,4,:使用,switch,选择结构,使用,switch,选
8、择结构解决问题,4,4.3 switch,选择结构,int mingCi=1;,switch,(mingCi),case,1:,System.out.println(,参加麻省理工大学组织的1个月夏令营,);,case,2:,System.out.println(,奖励惠普笔记本电脑一部,);,case,3:,System.out.println(,奖励移动硬盘一个,);,default,:,System.out.println(,没有任何奖励,);,输出结果是什么?,常见错误,-1,如果需要每个,case,执行完后跳出,,在每个,case,后不要忘记写,break;,4.3 switch,选
9、择结构,int,mingCi=1;,switch,(mingCi),case,1:,System.out.println(,参加麻省理工大学组织的1个月夏令营,);,case,2:,System.out.println(,奖励惠普笔记本电脑一部,);,case,2:,System.out.println(,奖励移动硬盘一个,);,default,:,System.out.println(,没有任何奖励,);,case,后面的常量必须各不相同,代码错误,常见错误,-2,4.3 switch,选择结构,int,mingCi=6;,switch,(mingCi),default,:,System.o
10、ut.println(,没有任何奖励,);,case,1:,System.out.println(,参加麻省理工大学组织的1个月夏令营,);,case,2:,System.out.println(,奖励惠普笔记本电脑一部,);,case,3:,System.out.println(,奖励移动硬盘一个,);,输出结果是什么?,default,块顺序可以变动,但要注意其执行顺序。,通常,,default,块放在末尾,也可以省略,常见错误,-3,4.3 switch,选择结构,String day=,星期一,;,switch,(day),case,星期一,:,System.out.println(,
11、星期一:青菜,);,break,;,case,星期二,:,System.out.println(,星期二:鱼,);,break,;,default,:,switch,后面小括号中表达式的值必须是整型或字符型,代码错误,常见错误,-4,4.3 switch,选择结构,比较,switch,和多重,if,选择结构,相同点,不同点,switch,选择结构,多重,if,选择结构,都是用来处理多分支条件的结构,只能处理等值条件判断的情况,而且条件必须是整型变量或字符型变量,没有,switch,选择结构的限制,特别适合某个变量处于某个连续区间时的情况,4.3 switch,选择结构,为了使程序更加健壮,程序
12、员在编码时要考虑用户可能出现的任何问题,并且在程序中做出相应的判断,给用户一个友好的提示,4.4,处理系统异常,Scanner,对象的,hasNextInt(),方法,可以判断用户从键盘输入的字符是否是合法的数字,5,、菜单跳转的程序,如果用户错误地输入了一个不允许的字符,例如,“,s,”,,程序会怎样呢?,Scanner input=new Scanner(System.in);,if(input.hasNextInt(),int num=input.nextInt();,switch(num),case 1:,/,显示系统主菜单,;,break;,case 2:,System.out.pr
13、intln(,谢谢您的使用!,);break;,default:,System.out.println(,输入错误。,);,else,System.out.println(,请输入正确的数字!,);,如果输入的是数字,如果输入的不是数字,演示示例,5,:处理系统异常,使用,hasNextInt(),解决,问题,5,4.4,处理系统异常,本章小结,Java,中的,if,选择结构,包括以下形式,基本,if,选择结构:可以处理单一或组合条件的情况,if-else,选择结构:可以处理简单的条件分支情况,多重,if,选择结构:可以处理复杂的条件分支情况,在条件判断是等值判断的情况下,可以使用,switch,选择结构代替,多重,if,选择结构,在使用,switch,选择结构时不要忘记每个,case,的,最后写上,break,语句,为了增加程序的健壮性,可以在程序中主动做判断,并给出用户,友好的提示,






