第三章类的方法郑莉JAVA语言程序设计JAVA语言程序设计清华大学郑莉2目录3.1方法的控制流程3.2异常处理简介3.3方法的重载(overloading)3.4本章小结JAVA语言程序设计清华大学郑莉33.1方法的控制流程方法的控制流程–Java程序通过控制语句来控制方法的执行流程–Java中的流程控制结构主要有三种顺序结构选择结构–if语句(二路选择结构)–switch语句(多路选择结构)循环结构–for语句–while语句–do-while语句JAVA语言程序设计清华大学郑莉43.1.1if选择结构语法形式–只有if分支,没有else分支if(boolean-expression){//statement1;}–if-else语句if(boolean-expression){//statement1;}else{//statement2;}方法的控制流程JAVA语言程序设计清华大学郑莉53.1.1if选择结构(续)–if-else语句的特殊形式if(booleanexpression){//statement1;}elseif(booleanexpression){//statement2;}elseif(booleanexpression){//statement;}…else{//statement;}方法的控制流程JAVA语言程序设计清华大学郑莉6ex3_1–输入一个年份,判断它是不是闰年。–闰年:能被4整除但不能被100整除,或者能被400整除。publicclassex3_1{publicstaticvoidmain(String[]args)throwsIOException{intyear;booleanIsLeapYear;System.out.println(Entertheyear:);BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));year=(newInteger(in.readLine())).intValue();3.1.1if选择结构(续)——ex3_1.java方法的控制流程JAVA语言程序设计清华大学郑莉7IsLeapYear=((year%4==0&&year%100!=0)||(year%400==0));if(IsLeapYear){System.out.print(year);System.out.println(isaleapyear);}else{System.out.print(year);System.out.println(isnotaleapyear);}}}3.1.1if选择结构(续)——ex3_1.java方法的控制流程JAVA语言程序设计清华大学郑莉8输入两个整数比较大小importjava.io.*;publicclassex3_2{publicstaticvoidmain(String[]args)throwsIOException{intx,y;BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));System.out.println(Enterxandy:);x=(newInteger(in.readLine())).intValue();y=(newInteger(in.readLine())).intValue();if(x!=y)if(xy)System.out.println(xy);elseSystem.out.println(xy);elseSystem.out.println(x=y);}}3.1.1if选择结构(续)——ex3_2.java方法的控制流程JAVA语言程序设计清华大学郑莉9例子:If(ab)System.out.println(Thelargeroneis:+a);elseSystem.out.println(Thelargeroneis:+b);用条件运算符重写:System.out.println(Thelargeroneis:+(ab)?a:b);3.1.1if选择结构(续)——以条件运算符代替if_else方法的控制流程JAVA语言程序设计清华大学郑莉10计算每个月的天数staticintdaysInMonth(intmonth){if(month==2)return(28);elseif((month==4)||(month==6)||(month==9)||(month==11))return(30);elsereturn(31);}方法的控制流程3.1.1if选择结构(续)——例3_1JAVA语言程序设计清华大学郑莉11已知一个学生的分数,给出其分数等级。90-100分为A级;80-89分为B级;70-79分为C级;60-69分为D级;0-59分为E级publicclassIfElseDemo{publicstaticvoidmain(String[]args){inttestscore=76;chargrade;if(testscore=90){grade='A';}elseif(testscore=80){grade='B';}elseif(testscore=70){grade='C';}elseif(testscore=60){grade='D';}else{grade='F';}System.out.println(Grade=+grade);}}程序输出:Grade=C3.1.1if选择结构(续)——ifElseDemo.java方法的控制流程JAVA语言程序设计清华大学郑莉123.1.2switch选择结构switch语句是多分支的选择结构switch(switch-expression){casevalue1:statementsforcase1;break;casevalue2:statementsforcase2;break;...casevalueN:statementsforcaseN;break;default:statementsfordefaultcase;break;}注意问题–switch-expression、常量值value1到valueN必须是整形或字符型–如果表达式的值和某个case后面的值相同,则从该case之后开始执行,直到break语句为止–default是可有可无的,若没有一个常量与表达式的值相同,则从default之后开始执行方法的控制流程JAVA语言程序设计清华大学郑莉13if(i==1){statementA();}elseif(i==2){statementB();}elseif((i==3)||(i==4)){statementC();}elseif(i==5){statementD();}else{statementF();}switch(i){case1:statementA();break;case2:statementB();break;case3:case4:statementC();break;case5:statementD();break;default:statementF();}3.1.2switch选择结构(续)——用switch代替if方法的控制流程JAVA语言程序设计清华大学郑莉14使用switch结构计算每个月的天数staticintdaysInMonth(intmonth){intdays;switch(month){case2:days=28;break;case4:case6:case9:case11:days=30;break;default:days=31;}return(days);}3.1.2switch选择结构(续)——例3_2方法的控制流程JAVA语言程序设计清华大学郑莉15用switch语句实现成绩分类的功能publicclassGrade{publicstaticchargradeLevel(doubleg){intn=(int)Math.floor(g/10);switch(n){case10:case9:return('A');case8:return('B');case7:return('C');case6:return('D');default:return('E');}}3.1.2switch选择结构(续)——例3_3方法的控制流程JAVA语言程序设计清华大学郑莉16publicstaticvoidmain(String[]args){System.out.println(gradeLevel(100)=+gradeLevel(100));System.out.println(gradeLevel(95.5)=+gradeLevel(95.5));System.out.println(gradeLevel(88)=+gradeLevel(88));System.out.println(gradeLevel(72)=+gradeLevel(72));System.out.println(gradeLevel(68.5)=+gradeLevel(68.5));System.out.println(gradeLevel(60)=+gradeLevel(60));System.out.println(gradeLevel(59.5)=+gradeLevel(59.5));System.out.println(gradeLevel(35)=+gradeLevel(35));}}3.1.2switch选择结构(续)——例3_3方法的控制流程JAVA语言程序设计清华大学郑莉17ex3_3–输入0~6之间的某一个整数,然后把它转换成星期输出。(0对应星期日)importjava.io.*;publicclassex3_3{publicstaticvoidmain(String[]args)throwsIOException{intday;BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));day=(newInteger(in.readLine())).intValue();3.1.2switch选择结构(续)——补充ex3_3.java方法的控制流程JAVA语言程序设计清华大学郑莉18switch(day){case0:System.out.println(Sunday);break;case1:System.out.println(Monday);break;case2:System.out.println(Tuesday);break;case3:System.out.println(Wednesday);break;case4:System.out.println(Thursday);break;case5:System.out.println(Friday);break;case6:System.out.println(Saturday);break;default:System.out.println(DayoutofrangeSunday..Saturday);break;}}}3.1.2switch选择结构(续)——补充ex3_3.java方法的控制流程JAVA语言程序设计清华大学郑莉19for循环结构–是Java三个循环语句中功能较强、使用较广泛的一个–for循环可以嵌套–一般语法格式如下for(start-expression;check-expression;update-expression){//bodyoftheloop;}–解释start-expression完成循环变量和其他变量的初始化工作check-expression是返回布尔值的条件表达式,用于