第三章选择结构程序设计第三章选择结构程序设计技能目标:通过本章学习,掌握Java语言中的if语句和switch语句的用法,并能灵活运用if语句和switch语句完成选择结构程序设计,为后续章节学习编程做准备。知识目标:掌握选择结构的用途;熟练掌握if语句的各种用法;掌握switch语句的使用方法任务:完善教务管理系统,比较学生成绩高低;根据成绩高低做出奖惩;判断成绩是优秀、良好、及格还是差3.1if语句if语句是根据条件来控制程序流程的。if结构存在3种形式:基本if语句、if-else语句、if-elseif多分支选择。3.1.1基本if语句if语句最简单的形式为:if(条件表达式){语句;}例如:if(xy){System.out.println(“max=”+x);}条件表达式语句假真3.1.1基本if语句例3-1如果小沈阳的Java考试成绩为100分,师父就奖励他一部Apple手机。3.1.1基本if语句importjava.util.*;publicclassScoreTest{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.println(请输入小沈阳本次考试的成绩:);intscore=sc.nextInt();if(score==100){System.out.println(师父奖励他一部Apple手机);}}}3.1.1基本if语句例3-2如果小沈阳的Java考试成绩为100分,师父就奖励他一部Apple手机,或者英语考试成绩大于90分,师父也奖励他。3.1.1基本if语句importjava.util.*;publicclassScoreTest{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.println(请输入小沈阳的Java和英语成绩:);intjava=sc.nextInt();intenglish=sc.nextInt();if(java==100||english90){System.out.println(师父奖励他一部Apple手机);}}}3.1.1基本if语句例3-3从键盘输入三位同学的考试成绩,求出最高分。3.1.1基本if语句importjava.util.*;publicclassMaxScore{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.println(请输入三位同学的考试成绩:);ints1=sc.nextInt();ints2=sc.nextInt();ints3=sc.nextInt();intmax=s1;//先假设s1为最高分。if(s2max){max=s2;}if(s3max){max=s3;}System.out.println(最高分:+max);}}3.1.2if-else语句if语句更常用的形式是双分支语句。当在条件满足和不满足时分别执行不同的语句的情况下使用。if-else语句的一般形式如下:if(条件表达式){语句1}else{语句2}3.1.2if-else语句例如:if(xy){max=x;}else{max=y;}条件表达式语句1假真语句23.1.2if-else语句例3-4如果小沈阳的Java考试成绩大于90分,师父就奖励他一本英文版的《ThinkinginJava》,否则师父就罚他表演二人转。3.1.2if-else语句publicclassScoreTest{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.println(请输入小沈阳的Java考试成绩:);intjava=sc.nextInt();if(java90){System.out.println(师父奖励他一本英文版《ThinkinginJava》);}else{System.out.println(表演二人转去吧!);}}}3.1.2if-else语句例3-5从键盘输入一个字母,如果输入的是小写字母,将其转换成大写字母后输出,否则原样输出。3.1.2if-else语句importjava.util.*;publicclassConvChar{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.println(请输入一个字母:);charch=sc.nextLine().charAt(0);//从键盘获取一个字母if(ch='a'&&ch='z'){ch=(char)(ch-32);System.out.println(输入的是小写字母,转换为大写字母是:+ch);}elseSystem.out.println(输入字母不是小写字母,它是:+ch);}}3.1.2if-else语句例3-6从键盘输入年份,判断是否为闰年。3.1.2if-else语句importjava.util.*;publicclassLeapYear{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.println(请输入一个年份:);intyear=sc.nextInt();if((year%4==0&&year%100!=0)||year%400==0){System.out.println(year+年是闰年);}else{System.out.println(year+年不是闰年);}}}3.1.3if-else-if多分支选择结构if双分支语句可对只有两种可能的条件做判断,而实际中有些问题可能需要在多种情况中做判断,这时可以使用if-else-if语句结构,以实现两个以上的分支控制。一般格式为:if(表达式1){语句1}elseif(表达式2){语句2}…elseif(表达式n){语句n}else{语句n+1}3.1.3if-else-if多分支选择结构if-else-if语句的执行流程见图。表达式1表达式n表达式2语句1语句2语句n语句n+1假假假真真真…3.1.3if-else-if多分支选择结构例3-7求解函数-1(x0)y=0(x=0)1(x0)3.1.3if-else-if多分支选择结构importjava.util.*;publicclassCalFunc{publicstaticvoidmain(Stringargs[]){intx,y;Scannersc=newScanner(System.in);System.out.println(请输入一个数字:);x=sc.nextInt();if(x0){y=-1;}elseif(x==0){y=0;}else{y=1;}System.out.println(x=+x+,y=+y);}}3.1.3if-else-if多分支选择结构例3-8对学生的考试成绩进行评测:成绩在90分以上为优秀,80到90分之间为良好,60到80分之间为及格,60分以下为差。3.1.3if-else-if多分支选择结构publicclassPerEval{publicstaticvoidmain(String[]args){intscore=72;//考试成绩if(score=90){//考试成绩=90System.out.println(优秀);}elseif(score=80){//90考试成绩=80System.out.println(良好);}elseif(score=60){//80考试成绩=60System.out.println(及格);}else{//考试成绩60System.out.println(差);}}}3.1.3if-else-if多分支选择结构例3-9某商场根据会员积分享受不同折扣:2000分以下享9折优惠,2000分到3000分之间享8.5折优惠,3000分以下享8折优惠。请输入会员积分,计算并输出该会员该享受的折扣。3.1.3if-else-if多分支选择结构publicclassCalcDiscount{publicstaticvoidmain(String[]args){/*输入会员积分*/System.out.print(请输入会员积分:);Scannersc=newScanner(System.in);intcustScore=sc.nextInt();doublediscount;/*判断折扣*/if(custScore2000){discount=0.9;}elseif(custScore3000){discount=0.85;}else{discount=0.8;}System.out.println(该会员享受的折扣是:+discount);}}3.1.4if语句的嵌套if-else-if语句实际上是if语句的一种嵌套方式,对于一般的if语句,可以根据需要进行嵌套。在if语句中又包含一个或多个if语句称为if语句的嵌套。常见的if语句的嵌套格式如下:(1)在if后面进行嵌套,格式如下:if(表达式1){if(表达式2)语句1;else语句2;}else语句3;(2)在else后面进行嵌套,格式如下:if(表达式1)语句3;else{if(表达式2)语句2;else语句3;}3.1.4if语句的嵌套例3-10将例3-7改用if语句的嵌套来实现。3.1.4if语句的嵌套importjava.util.*;publicclassCalFunc{publicstaticvoidmain(Stringargs[]){intx,y;Scannersc=newScanner(System.in);System.out.println(请输入一个数字:);x=sc.nextInt();if(x=0){if(x0)y=-1;}else{y=1;}System.out.println(x=+x+,y=+y);}}3.1.5关于复合语句问题if或else后面的内容,通常是由多个语句组成的复合语句,必须用{}括起来。如果复合语句中只有一个语句时,可以省略{}。例如:if(password==123){System.out.println(密码正确,欢迎使用!);}else{System.out.println(密码错误,请重新输入!);}可以写成:if(password==123)System.out.println(密码正确,欢迎使用!);elseSystem.out.println(密码错误,请重新输入!);3.2switch语句3.2.1基本的switch语句switch语句的一般形式为:switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;…case常量表达式n:语句n;break;default:语句n+1}3.2switch语句switch语句的基本流程如图所示。表达式值2语句块1;break;语句块2;break;值n语句块n;break;语句块n+1;default其他语句值1...3.2switch语句该语句的执行流程:先计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后面的语句。3.2switch语句例3-11输入一个1~7之间的数字,输出其所对应的每