版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验8异*常处理、log4j、反射与内部类实验目的1、理解异常的概念,熟悉异常的分类、Exception类、Java的异常处理机制及声明抛出异常、自定义异常的方法;2、熟悉Iog4j的基本用法;3、理解反射的概念,熟悉反射中常用类的基本用法;4、理解内部类的概念,熟悉成员内部类和局部内部类的基本用法。实验步骤1、(基础题)下图是一程序运行的结果,请根据程序代码和注释填空,并回答问题:结果:void void voidVO idvoidputDataint int);getData(intfloatj ava*lang.String); wait();wait (loiigint);wait (
2、long;int hashCode ():java»lang,Class getCIass); boolean equalsjav,Ing,Object); java.lang,String toString();void notify);void notifyAI 1();程序代码:/打印该类公有方法的返回类型、import java.Iang.reflect.Method;名称和参数列表class MyClass6 publicvoid getData( inta, float b, Stri ng s) public void putData( int a, int b) Pu
3、blicclass ClassMethodExample public static void main(String args) MyClass6 myObj = new MyClass6(); dis playMethods (myObj);static void displayMethods(Object obj) int count = 0;Class<? extends Object> c1 = obj.getClass();Method stri ngMethods = c1.getMethods(); while (count < stringMethods.l
4、ength ) Stri ng methodName = stri ngMethodsco un t.getName(); Class<?> retur nType = stri ngMethodsco un t.getRetu rnTyp e();""+methodName + "(");System. out .print( returnType +Class ParameterTypes =stri ngMethodsco un t.get ParameterT yp es();for ( int i = 0; i < param
5、eterTypes.length ; i+) Stri ng p arameterName = p arameterT yp esi.getName(); System. out .print( "" + parameterName);coun t+;System. out .println(");");问题:1)该程序的实现功能是什么?请解释一下运行结果前三行各代表什么含义?代表getData方法返回类型、名打印该类公有方法的返回类型、名称和参数列表2)void getData(i ntfloatjava.Ia ng.Stri ng);称和参数列表vo
6、id putData(intint);代表putData方法返回类型、名称和参数列表void wait(longint);代表wait方法返回类型、名称和参数列表2、(基础题)分析、运行所给的Student.java 程序,并回答下列问题:1)该程序的内部类是什么?其访问权限怎样?有哪些属性和方法?构造方法具有什么功能?内部类是Course类,私有访问权限,属性:Stri ng strCourse ;courseNumber方法:PublicCourse(Stn ng course)(构造方法,初始化属性)p rivate voidgetCourse()(获得并且输出课程名)p rivate
7、voidgetDescri ptio n()(设置课程,并且输出)2)该程序的外部类是什么?Student 缺省?内部类实例是在哪里创建的?setStude ntCourse(Stri ng3)内部类与外部类之间是怎样联系的部类与外部类之间通过public void strCourse)方法联系,在 Publicvoid setStudentCourse(String strCourse)new Course(strCourse);方法中创建实例4)内部类编译后形成的类文件是如何命名的Stude nt$Course3、(基础题)根据catch子句处理异常所输岀的信息的提示,请在下面程序(1)、
8、 (2)、 (2)处填入适当的代码:p ublicclass Lab6_4 p ublic static void main( Stri ng args) try intintintx=68;y=ln teger. parse In t(args0);z=x/y;System.out.println("x/y 的值是"+z); catch (_ Array In dexOutOfBo un dsExce pti oneSystem.out.println("缺少命令行参数。"+e); catch(NumberFormatException e)Syste
9、m.out.println("参数类型不正确。"+e); catch (ArithmeticException e)System.out.println("算术运算错误。"+e); fin ally System.out. pri ntln("程序执行完!");)程序运行结果如下: 程序执行完!Exce pti on in thread "mai n"java.Ia ng.Arrayl ndexOutOfBo un dsExce ptio nat p a.Lab6_4.ma in(Lab6_4Java:7 )有用提
10、示:(l)ArithmeticExce pti on:除数为0时的算术异常(2)Null Poi nterExce ption:找不到文件的异常:没有给对象分配内存空间,而又去访问对象的空指针异常(3)FileNotFou ndExce ptionArrayI ndexOutOfBou ndsExce ption:数组元素下标越界异常(5)NumberFormatExce ptio n:数据格式不正确异常请模仿不同异常情况予以执行。它继承了 Exception类Exception super ();sup er (s);4、(基础题)下面是一个自定义异常类调用的程序,请根据程序上下文填充所缺内
11、容: /自定义异常类 MotorExceptionclassMotorExce pti onexte ndsMotorExce ptio n()MotorExce pti on( Stri ng s)publicpublicclass Carprivateprivatefloatfloatsp eed = 0; MAX_V = 300;/说明调用该方法可能抛岀MotorException异常MotorExce pti onp ublicvoid accelerate( float inc) _throwsif (speed+inc > MAX_V)/抛岀MotorException异常实
12、例,提示”发动机将被毁坏!”throw new MotorException("发动机将被毁坏!") else sp eed+=inc;publicpublicpublicclass Lab6_5 static Car car ;static void main( Stri ng args)car= new Car();_try/可能引发异常的块or (;)car.accelerate(0.5f);catch(MotorException me)/ 捕获、处理异常System. out .println("Mechanical problem: "+me
13、);程序运行结果:Mechanical problem:pa.MotorException:发动机将被毁坏!本用法,imp ortimp ort并回答相关问题。5、(基础题)先加载Iog4j的jar包,再分析、运行下列程序,休会Iog4j的基java.util.I npu tMismatchExce pti on; java.util.Sca nner;importorg.a pache.log4j丄ogger;class Test static Loggerpublicp rivatepublic trylogger =Logger. getLogger (Test. class .getN
14、ame();static void main(String args) Sca nner in =new Sca nn er(System.in);System. out .print("请输入被除数:");int num1 = in.n ext In t(); logger .debug("输入被除数:"+ num1); System. out .print("请输入除数:"); int num2 = in.n ext In t();logger .debug("输入除数:"+ num2);System. out
15、 .println(String.format ("%d / %d = %d",nu m1, nu m2, nu m1/ nu m2);logger .debug("输出运算结果:"+ String.format ("%d / %d=%d",nu m1, nu m2, num1 / nu m2);catch (InputMismatchException e) logger .error("被除数和除数必须是整数",e); catch (ArithmeticException e) logger .error(e.
16、getMessage();catch (Exception e) logger .error(e.getMessage(); fin allySystem. out .println("欢迎使用本程序! ”);II II IITi Illi11 11 11u8BBEu7F6ELoggeru8F93u51FAu7EA7u522Bu548Cu8F93u51FAu 76EEu7684u5730 #log4j.rootLogger= debug,A,Bff ff ffTT II HH H Hu628Au65E5u5FD7u4FE1u606Fu8F93u51FAu5230u63A7u5236u
17、53F0 #log4j.a ppen der.A=org.a pache.log4j.Co nsoleA ppen derSystem.errorg.a pache.log4j.Si mp leLayoutlog4j.a ppen der.A.Target=log4j.a ppen der.A.layout=II II IITi Illi11 11 11u628Au65E5u5FD7u4FE1u606Fu8F93u51FAu5230u6587u4EF6uFF1Ajbit.log #log4j.a ppen der.B=org.a pache.log4j.FileA ppen derlog4j.
18、a ppen der.B.File=jbit.loglog4j.a ppen der.B.layout=org.a pache.log4j. PatternLayoutlog4j.a ppen der.B.layout.Co nversio nP attern=%dYYYY-MM-DDHH:mm:ss %l %F %p %m%n问题:1) Iog4j将信息分为多少个级别?五大级别2)怎样设置才能将错误信息在屏幕上显示?配置log4j. properties把日志信息输出到控制台3 )怎样设置才能将错误信息在文件中输出?配置perties把日志信息输出到文件6 (提高题)模拟银
19、行ATM完成以下功能:(1)查询余额(2)取款(3)存款(4)退岀在控制台上模拟上述菜单,系统根据用户所选择的数字进行相应的功能。如果所选数字不是以 上1-4之间通知重新输入。当用户取款的金额超岀帐户余额抛岀自定义异常,通知重新输入金额。当用户选择4时整个系统退岀。运行效果如下所示:(主类名字必须改,否则运行岀错 )1)显示余额2)取款3)存款4)退岀P ress No.:1帐户余额为:1000.01)显示余额2)取款3)存款4)退岀P ress No.:2请输入取款金额1001)显示余额2)取款3)存款4)退岀P ress No.:1帐户余额为:900.01)显示余额2)取款3)存款4)退岀
20、P ress No.:2请输入取款金额1200余额不足1)显示余额2)取款3)存款4)退岀P ress No.:4系统退岀!请认真阅读下面的代码并回答如下问题:自定义异常类 Ba nkExce ption 继承了什么类?能不能换成其他的类?为什么?类Bank的menu()方法的功能是什么?menu()方法里调用了哪些方法?在取款方法dep ositO 里声明了哪些异常?当余额不足时,又重新抛岀了哪个异常?imp ort java.io.*;/主程序:p ublicclassMyExce pti on p ublicstatic void main( Stri ng args) Bank my
21、= new Ban k(1000.0);/ 菜单while ( true ) Bank. menu (my);/定义自定义异常类.抛岀该异常条件:取款金额超岀帐户余额class Ban kExce pti onexte ndsExce pti on void dis pO System. out .pnntln("余额不足“);class Bank double account ; / 余额Bank( doubledl) accou nt=dl;static voidSystem. System. switchmen u(Ba nk obj) "1)显示余额 2) &quo
22、t;P ress No.:");out .println( out .print(getChoice取款3)存款4 )退岀");()case 1:obj.dis p(); break ;/余额显示case 2:/取款try obj.de posit(); catch(BankException e) e.dis p(); catch (IOException e) e.prin tStackTrace();break ;case 3:obj.sav in g(); break ;/存款case 4:System.System.default :outexit.println
23、(0);"系统退岀!");System.out.println("重新选择!");staticintint getChoice() choice = 0;/选择功能数字tryBufferedReaderbr=new BufferedReader(new InputStreamReader(System.choice = In teger.in );p arse Int(br.readL in e(); catch(IOException e) e.prin tStackTrace();retur nchoice;/存款voidsav in g() doubletra ns_accou nt;/输入存款金额System. out .pnnt( try BufferedReader"请输入存款金额“);br = new BufferedReader( in );trans account = Double.new InputStrea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024航空公司与机场地勤服务提供商合作协议
- 2024铝合金门窗安装工程节能保障合同范本3篇
- 2024智能家居系统研发与运营委托合同
- 2024铝单板生产设备租赁与销售合同3篇
- 二零二五年度医疗机构药品及医疗器械采购合同模板3篇
- 二零二五年度知识产权授权与许可合同6篇
- 家中实验室家庭亲子科学劳动的实践
- 技术推动的小学心理健康教育模式研究
- 家庭教育与孩子健康心理的构建
- 工业机器人中的嵌入式系统分析
- GB 4053.2-2009固定式钢梯及平台安全要求第2部分:钢斜梯
- GB 28261-2012安全气囊气体发生器用点火具生产安全技术条件
- 通力电梯培训教材:《LCE控制系统课程》
- RT qPCR(实时荧光定量PCR)课件
- 品管圈PDCA持续质量改进提高静脉血栓栓塞症规范预防率
- 医院发热门诊工作考核表
- 陕西省榆林市各县区乡镇行政村村庄村名居民村民委员会明细
- 螺杆空压机作业指导书
- 中国智能物联网(AIoT)研究报告
- 江苏新海石化有限公司废气治理项目环境影响报告书
- 6.8相遇问题(课件) 数学四年级下册(共15张PPT)人教版
评论
0/150
提交评论