为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

异常类、嵌套类、枚举类

2018-02-21 16页 doc 139KB 21阅读

用户头像

is_079973

暂无简介

举报
异常类、嵌套类、枚举类异常类、嵌套类、枚举类 你一定要坚强,即使受过伤,流过泪,也能咬牙走下去。因为,人生,就是你一个人的人生。 ===================================================================== ======= 课程名称 面向对象程序设计 实验项目名称 异常类、嵌套类、枚举类 学生姓名 专业班级 学号 注意: , 务请保存好各自的源代码,已备后用。 , 完成本实验后,将实验项目文件和实验报告,压缩为rar文件,上传ftp。如没有个人 文件夹,请按学号_姓名格式建立。...
异常类、嵌套类、枚举类
异常类、嵌套类、枚举类 你一定要坚强,即使受过伤,流过泪,也能咬牙走下去。因为,人生,就是你一个人的人生。 ===================================================================== ======= 课程名称 面向对象程序设计 实验项目名称 异常类、嵌套类、枚举类 学生姓名 专业班级 学号 注意: , 务请保存好各自的源代码,已备后用。 , 完成本实验后,将实验项目文件和实验,压缩为rar文件,上传ftp。如没有个人 文件夹,请按学号_姓名建立。 , 文件名为:学号_日期_实验XX,如30801001_20100305_实验01.rar , 请务必在下次实验课之前提交作业,迟交缺交实验报告将酌情扣分。 , 请勿抄袭作业。一次作业抄袭的扣分数至少为缺交作业的3倍。 一. 实验目的和要求 掌握异常类、嵌套类、枚举类 二. 实验内容 1、程序阅读 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 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(){ public 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(args[0]); // 语句1 b = 10; // 语句2 } catch(NumberFormatException e){ a = 1; } System.out.println(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(args[0])语句时,就会出错,使得a=1,则b=10就不会被执行,所以b仍然是0; 2(编译下面的程序,并回答问题。 class ExceptionTest2{ public static void main(String[] args){ int a=0; try{ a = Integer.parseInt(args[0]); } } } (1) 编译上述程序,是否出错? 出错。 命运如同手中的掌纹,无论多曲折,终掌握在自己手中 ============================================================== 你一定要坚强,即使受过伤,流过泪,也能咬牙走下去。因为,人生,就是你一个人的人生。 ===================================================================== ======= (2) 如果出错, 给出出错信息(即javac编译该文件出错信息): 分析为何出错? try语句之后一定要带有catch或者finally。 (2)如果将程序改写为: class ExceptionTest2{ public static void main(String[] args){ int a=0; try{ a = Integer.parseInt(args[0]); } catch(NumberFormatException e){ a = 1; } } } 上述程序是否编译出错? 为什么? 没有出错。 (3)如果将程序改写为: class ExceptionTest2{ public static void main(String[] args){ int a=0; try{ a = Integer.parseInt(args[0]); } finally{ 命运如同手中的掌纹,无论多曲折,终掌握在自己手中 ============================================================== 你一定要坚强,即使受过伤,流过泪,也能咬牙走下去。因为,人生,就是你一个人的人生。 ===================================================================== ======= a = 1; } } } 上述程序是否编译出错? 为什么? 没有出错。 (4) 如果将程序改写为: class ExceptionTest2{ public static void main(String[] args){ int a=0; try{ a = Integer.parseInt(args[0]); } catch(Exception e){ a = 1; } catch(NumberFormatException e){ a = 2; } } } 上述程序是否编译出错? 出错。 分析为何出错, 如何修改程序使之正确? 异常已经被catch(Exception e)处理, 命运如同手中的掌纹,无论多曲折,终掌握在自己手中 ============================================================== 你一定要坚强,即使受过伤,流过泪,也能咬牙走下去。因为,人生,就是你一个人的人生。 ===================================================================== ======= catch(NumberFormatException e)无法找到catch块。 直接去掉catch(NumberFormatException e){}。 3、编译下面的程序,并回答问题。 class ExceptionTest3{ public static void main(String[] args){ check(-1); } static void check(int i){ if( i<0) throw new Exception(); } } (1) 上述程序编译是否出错, 出错。 分析错误原因 异常类型 Exception未被处理。 (2)将上述程序修改为: class ExceptionTest3{ public static void main(String[] args){ check(-1); } static void check(int i) throws Exception{ if( i<0) throw new Exception(); } } 那么,上述程序编译是否出错, 出错。 分析出错原因: 异常类型 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) 上述程序编译是否出错, 出错。 编译错误是什么, 异常类型 Exception未被处理。 (2)修正上述程序(通过两种方式:给方法添加throws子句,或者使用try-catch-finally)。 class ExceptionTest4{ public static void main(String[] args){ try{method3();} .println("success!");} catch(Exception e){System.out } static void method1()throws Exception{ throw new Exception(); } static void method2()throws Exception{ method1(); } 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(); }catch(RuntimeException e){ System.out.println("success!"); } } static void method1(){ throw new RuntimeException(); } static void method2(){ method1(); } static void method3(){ method2(); } } 命运如同手中的掌纹,无论多曲折,终掌握在自己手中 ============================================================== 你一定要坚强,即使受过伤,流过泪,也能咬牙走下去。因为,人生,就是你一个人的人生。 ===================================================================== ======= 5、设计一个简单的类ExceptionTest, 在该类的main方法中实现:将输入参数args[0]转换为int类型的数字(要求使用包装类的数字转换方法,并通过try-catch-finally方式捕获并处理转换异常),然后显示这个数字的平方值。 比如,在命令提示符下输入java ExceptionTest 9 并回车,程序显示81。 public class ExceptionTest { public static void main(String[] args){ int a; try{ a= Integer.parseInt(args[0]); a=a*a; }catch(NumberFormatException e){ a = 1; } System.out.println(a); } } 命运如同手中的掌纹,无论多曲折,终掌握在自己手中 ============================================================== 你一定要坚强,即使受过伤,流过泪,也能咬牙走下去。因为,人生,就是你一个人的人生。 ============================================================================ 命运如同手中的掌纹,无论多曲折,终掌握在自己手中 ==============================================================
/
本文档为【异常类、嵌套类、枚举类】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索