1、第三章 类的方法,郑 莉,JAVA语言程序设计,内容,方法的控制流程 异常处理简介 方法的重载(overloading),流程控制语句,选择语句 if-else, switch-case 循环语句 while, do-while , for 跳转语句 break, continue, label:, return,选择语句if-else,if(Boolean-expression) statement 或者: if(Boolean-expression) statement else statement ,if-else,if (boolean expression) statement; e
2、lse if (boolean expression) statement; else if (boolean expression) statement; else statement;,public class IfElseDemo public static void main(String args) int testscore = 76;char grade;if (testscore = 90) grade = A; else if (testscore = 80) grade = B; else if (testscore = 70) grade = C; else if (te
3、stscore = 60) grade = D; else grade = F;System.out.println(“Grade = “ + grade); ,程序输出: Grade = C,例子,ex3_1 输入一个年份,判断它是不是闰年。 闰年: 能被4整除但不能被100整除,或者能被400整除。,public class ex3_1 public static void main(String args) throws IOException int year;boolean IsLeapYear;System.out.println(“Enter the year:“);Buffer
4、edReader in =new BufferedReader(new InputStreamReader(System.in);year=(new Integer(in.readLine().intValue();IsLeapYear=(year%4=0 ,例子,ex3_2 输入两个整数比较大小。,import java.io.*; public class ex3_2 public static void main(String args)throws IOExceptionint x,y;BufferedReader in = new BufferedReader(new InputSt
5、reamReader(System.in);System.out.println(“Enter x and y:“);x=(new Integer(in.readLine().intValue();y=(new Integer(in.readLine().intValue();if (x!=y)if (xy) System.out.println(“xy“);else System.out.println(“xy“);else System.out.println(“x=y“); ,以条件运算符实现分支,例子: If (ab)System.out.println(“The larger one
6、 is: “+a); elseSystem.out.println(“The larger one is: “+b); 用条件运算符重写: System.out.println(“The larger one is: “+ (ab)? a:b);,switch多分支语句,switch(integral-selector) case integral-value1 : statement; break; case integral-value2 : statement; break; case integral-value3 : statement; break; case integral-v
7、alue4 : statement; break; case integral-value5 : statement; break; / . default: statement; ,用 switch 代替 if,if (i = 1) statementA(); else if (i = 2) statementB(); else if (i = 3) | (i = 4) statementC(); else if (i = 5) statementD(); else statementF(); ,switch (i) case 1: statementA();break;case 2: st
8、atementB();break;case 3:case 4: statementC();break;case 5: statementD();break;default: statementF();,例子,ex3_3 输入06之间的某一个整数,然后把它转换成星期 输出。(0对应星期日),import java.io.*; public class ex3_3 public static void main(String args)throws IOExceptionint day;BufferedReader in =new BufferedReader(new InputStreamRea
9、der(System.in);day=(new Integer(in.readLine().intValue();,switch (day) case 0: System.out.println(“Sunday“); break;case 1: System.out.println(“Monday“); break;case 2: System.out.println(“Tuesday“); break;case 3: System.out.println(“Wednesday“); break;case 4: System.out.println(“Thursday“); break;cas
10、e 5: System.out.println(“Friday“); break;case 6: System.out.println(“Saturday“); break;default: System.out.println(“Day out of range Sunday Saturday“ ); break; ,循环,ex3_4 计算数列1,2,10 的和。,public class ex3_4 public static void main(String args)int i=1, sum=0;while(i=10)sum+=i;i+;System.out.println(“sum=
11、“+sum); ,while 语句,一般语法:while(Boolean-expression) statement ,例子,ex3_5 输入一个整数,然后输出它的翻转形式。,import java.io.*; public class ex3_5 public static void main(String args)throws IOException int n, right_digit, newnum = 0;BufferedReader in = new BufferedReader(new InputStreamReader(System.in);System.out.printl
12、n(“Enter the number: “);n=(new Integer(in.readLine().intValue();System.out.print(“The number in reverse order is “);do right_digit = n % 10;System.out.print(right_digit);n /= 10; while (n != 0);System.out.println(); ,do-while 语句,do statement while(Boolean-expression);,比较这两段程序,/ while(i=10)sum+=i;i+;
13、 System.out.println(“sum=“+sum);,/do sum+=i;i+; while(i=10);System.out.println(“sum=“+sum);,ex3_6,for 语句,一般格式: for(initialization; termination; increment) statement 死循环格式: for ( ; ; ),例子,ex3_7 输入一个整数,输出它所有的因数。,import java.io.*; public class ex3_7 public static void main(String args)throws IOExceptio
14、n int n,k;BufferedReader in =new BufferedReader(new InputStreamReader(System.in);System.out.println(“Enter a positive integer: “);n=(new Integer(in.readLine().intValue();System.out.print(“Number “+n+“ Factors “);for (k=1; k = n; k+)if (n % k = 0) System.out.print(k + “ “);System.out.println(); ,逗号运算
15、符,逗号运算符可以用在 for 循环控制表达式的初始化和递增两部分。在这两部分中可以存在多个由逗号分隔的语句,这些语句会被依次计算。,例子,public class ex3_8 public static void main(String args) for(int i = 1, j = i + 10; i 5; i+, j = i * 2) System.out.println(“i= “ + i + “ j= “ + j); ,跳转语句,Break语句 Continue语句 Return语句,Break和Continue语句,Break 语句 跳出循环,不再执行剩余部分。 Continue
16、 语句 停止本次迭代,回到循环起始处,开始下一次迭代过程。 例子 BreakAndContinue.java,public class BreakAndContinue public static void main(String args) for(int i = 0; i 100; i+) if(i = 74) break; if(i % 9 != 0) continue; System.out.println(i); int i = 0; while(true) i+; int j = i * 27; if(j = 1269) break; if(i % 10 != 0) continu
17、e; System.out.println(i); ,ex3_9,return 语句,从当前的方法中退出 返回值 return expression; 返回 return;,流程控制语句总结,三种循环结构 一个灵活的 if-else 语句 一个switch 语句 异常处理语句 跳转语句,循环,循环执行一段程序 while 语句 在循环开始首先计算终止条件表达式。 do-while语句 在循环体的最后计算终止表达式。 所以循环体至少被执行一次。 for语句 包括一个初始化表达式,一个终止条件表达式,一个递增表达式,选择语句,if-else 最基本的选择语句 基础的 if 语句 if 语句加 el
18、se 语句 用 else if 构造混合的 if 选择语句 switch 根据一个整数值决策一个多项选择。,跳转语句,改变程序的流程 break 语句 continue语句 return语句,异常处理,异常处理的意义 错误的分类 异常的处理 生成异常对象 定义自己的异常类,异常处理的意义,异常的基本概念 异常(Exception)又称为例外,是特殊的运行错误对象,对应着java语言特定的运行错误处理机制。程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,将阻止程序的正常运行。为了加强程序的健壮性(robust),程序设计时,必须考虑到对可能发生的异常事件做出相应的处理。,Ja
19、va预定的异常,ArithmeticException 整数除法中,如果除数为0,则发生该类异常。 NullPointerException 如果一个对象还没有实例化,那么访问该对象或调用它的方法将导致NullPointerException异常。 NegativeArraySizeException 数组的元素个数应是一个大于等于0的整数。创建数组时,如果元素个数是个负数,则会引发NegativeArraySizeException异常。 ArrayIndexOutOfBoundsExceptionJava 把数组看作是对象,并用length变量记录数组的大小。访问数组元素时,运行时环境根据
20、length值检查下标的大小。如果数组下标越界,则将导致ArrayIndexOutOfBoundsException异常。ArrayStoreException 程序试图存取数组中错误的数据类型。 FileNotFoundException 试图存取一个并不存在的文件。 IOException 通常的I/O错误。,异常处理语句,try statement(s) catch (exceptiontype name) statement(s) finally statement(s) ,异常处理语句,try 语句 其后跟随可能产生异常的代码块。 catch语句 其后跟随异常处理语句。 finall
21、y语句 不论在try代码段是否产生异常,finally 后的程序代码段都会被执行。,方法重载,如果一个类有两个同名的方法,但参数不同,这种方法就被称为重载。 Java可以通过参数列表的不同来辨别重载的方法。,例子,import java.util.*; class Tree int height; void setHeight(int h) height=h; void info() prt(“Tree is “ + height + “ feet tall“); void info(String s) prt(s + “: Tree is “ + height + “ feet tall“)
22、; static void prt(String s) System.out.println(s); ,public class Overloading public static void main(String args) for(int i = 0; i 5; i+) Tree t = new Tree(); t.setHeight(i);t.info(); t.info(“overloaded method“); ,输出Tree is 0 feet tall overloaded method: Tree is 0 feet tall Tree is 1 feet tall overloaded method: Tree is 1 feet tall Tree is 2 feet tall overloaded method: Tree is 2 feet tall Tree is 3 feet tall overloaded method: Tree is 3 feet tall Tree is 4 feet tall overloaded method: Tree is 4 feet tall,