1、异常类嵌套类枚举类课程名称 面向对象程序设计 实验项目名称 异常类、嵌套类、枚举类 学生姓名 专业班级 学号 注意: 务请保存好各自的源代码,已备后用。 完成本实验后,将实验项目文件和实验报告,压缩为rar文件,上传ftp。如没有个人文件夹,请按学号_姓名格式建立。 文件名为:学号_日期_实验XX,如30801001_20100305_实验01.rar 请务必在下次实验课之前提交作业,迟交缺交实验报告将酌情扣分。 请勿抄袭作业。一次作业抄袭的扣分数至少为缺交作业的3倍。一. 实验目的和要求 掌握异常类、嵌套类、枚举类二. 实验内容 1、程序阅读2、综合体三. 实验结果与分析(可将程序运行结果截
2、屏,也可分析运行结果)(一)、程序阅读结果1运行下面的Test类,写出运行结果,并分析比较代码1与代码2两种方式的异同abstract class A abstract void abc(); void bbb()abc();class B extends A void abc()System.out.println(bbb);class Test static void f(A a) a.bbb(); public static void main(String args) f( new A() void abc()System.out.println(bbb); ); /代码1 f(new
3、 B();/代码2 代码1是匿名类实现;代码2是顶层类实现;2运行下面的Test类,写出运行结果,并分析比较代码1与代码2两种方式的异同interface IA void abc(); void bbb();class A implements IA public void bbb()System.out.println(ccc); public void abc()System.out.println(bbb);class Test static void f(IA a) a.bbb(); public static void main(String args) f(new IA() pub
4、lic void bbb()System.out.println(ccc); public void abc()System.out.println(bbb); ); /代码1 f(new A();/代码2 (二)、综合题1编译下面的程序,并回答问题。class ExceptionTest1 public static void main(String args) int a=0,b=0; try a = Integer.parseInt(args0); / 语句1 b = 10; / 语句2 catch(NumberFormatException e) a = 1; System.out.p
5、rintln(a); System.out.println(b); (1)执行上述ExceptionTest1类(在命令提示符下敲入java ExceptionTest1 99) 运行结果:(2)执行上述ExceptionTest1类(在命令提示符下敲入java ExceptionTest a) 运行结果:(3)比较上面两次运行的结果,说明原因。(思考:执行语句1时发生异常,语句2执行没有?) 第一次执行时,输入了99,99可以被强制转化,所以不会出错,此时a=99,b=10;第二次执行时,输入了a,而a不能被强制转化成Integer类,所以执行Integer.parseInt(args0)语
6、句时,就会出错,使得a=1,则b=10就不会被执行,所以b仍然是0;2编译下面的程序,并回答问题。class ExceptionTest2 public static void main(String args) int a=0; try a = Integer.parseInt(args0); (1) 编译上述程序,是否出错?出错。(2) 如果出错, 给出出错信息(即javac编译该文件出错信息): 分析为何出错? try语句之后一定要带有catch或者finally。(2)如果将程序改写为: class ExceptionTest2 public static void main(Stri
7、ng args) int a=0; try a = Integer.parseInt(args0); catch(NumberFormatException e) a = 1; 上述程序是否编译出错? 为什么?没有出错。(3)如果将程序改写为:class ExceptionTest2 public static void main(String args) int a=0; try a = Integer.parseInt(args0); finally a = 1; 上述程序是否编译出错?为什么?没有出错。(4) 如果将程序改写为:class ExceptionTest2 public st
8、atic void main(String args) int a=0; try a = Integer.parseInt(args0); catch(Exception e) a = 1; catch(NumberFormatException e) a = 2; 上述程序是否编译出错?出错。分析为何出错, 如何修改程序使之正确?异常已经被catch(Exception e)处理,catch(NumberFormatException e)无法找到catch块。直接去掉catch(NumberFormatException e)。3、编译下面的程序,并回答问题。class Exception
9、Test3 public static void main(String args) check(-1); static void check(int i) if( i0) throw new Exception(); (1) 上述程序编译是否出错?出错。 分析错误原因异常类型 Exception未被处理。(2)将上述程序修改为:class ExceptionTest3 public static void main(String args) check(-1); static void check(int i) throws Exception if( i0) throw new Excep
10、tion(); 那么,上述程序编译是否出错?出错。分析出错原因:异常类型 Exception未被处理。4编译下面程序,回答问题。class ExceptionTest4 public static void main(String args) method3(); System.out.println(success!); static void method1() throw new Exception(); static void method2() method1(); static void method3() method2(); (1) 上述程序编译是否出错?出错。 编译错误是什么
11、?异常类型 Exception未被处理。(2)修正上述程序(通过两种方式:给方法添加throws子句,或者使用try-catch-finally)。class ExceptionTest4 public static void main(String args) trymethod3(); catch(Exception e)System.out.println(success!); static void method1()throws Exception throw new Exception(); static void method2()throws Exception method1
12、(); static void method3()throws Exception method2(); (3)如果将方法method1中的throw new Exception();更改为:throw new RuntimeException();那么程序是否编译通过?通过。如果编译正常,那么执行ExceptionTest4类,出现什么结果(是否会显示success字符串)?不会显示success。如何修改程序使得能够显示success字符串?class ExceptionTest4 public static void main(String args) try method3(); ca
13、tch(RuntimeException e) System.out.println(success!); static void method1() throw new RuntimeException(); static void method2() method1(); static void method3() method2(); 5、设计一个简单的类ExceptionTest, 在该类的main方法中实现:将输入参数args0转换为int类型的数字(要求使用包装类的数字转换方法,并通过try-catch-finally方式捕获并处理转换异常),然后显示这个数字的平方值。比如,在命令提示符下输入java ExceptionTest 9 并回车,程序显示81。public class ExceptionTest public static void main(String args) int a; try a= Integer.parseInt(args0); a=a*a; catch(NumberFormatException e) a = 1; System.out.println(a);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2