、实验/实习过程实验题 1在程序中产生一个ArithmeticException 类型被0除的异常,并用catch 语句捕获这个异常。
最后通过 ArithmeticException类的对象e 的方法getMessage 给出异常的具体类型并显示出来[j'.除数U j av®風package Package1;public? class 除数匚i {puljJ.ic static: void tnain (Strargs [ ] ) {try :int 3=10; int b=D;System- on t . pr intln ( n 输出结果肯:fr 4-a/b); System- t . pr("除數不能为□**+&. gets Message;E ConsoleX 事氏囲^t^rminated)-際數。
[java A.ppli csiti on J C : S.Pr ograim F i 1 e E V J avaStj ireB \b i IL \ J avaw . es:e ©C13-10-25 package Packagel;catch (ArithmetlcExcEption e)( 除数不能为叩 by sexopublicclass 除数0 {publicstatic void mai n(Stri ng args[]){try {int a=10;int b=0;System. out .println(}catch(ArithmeticException e){System. out .println(}}输岀结果为:"+a/b);"除数不能为 0" +e.getMessage());}实验题2在一个类的静态方法method。
ne()方法内使用throw产生ArithmeticException 异常,使用throws 子句抛出methodOne()的异常,在main方法中捕获处理ArithmeticException 异常。
fiuljTlc class 抛出异常{static void mutrhodOnu () throws icn{S ystern. out * print In C r,'Q2tuethodOne l-|-r,r) • tKrcnr n.«r krit-hmeticExcepticn ;) puJ)l 1 c statLO void itiain[String args[]){i n.t a~ 10;int b«0;in_t c—1/Systetti. pwf. 出结果为:rr+a/h);}catch(Arlr-hiriet-icEzception ej iSystem, out.皿in匸丄険数不能为Ci11吊.wetness a^e 门):Ct&rmirL*+4d> 抛出畀官[Jiva ApplicatiiiJ C: \Froeram Fil*s\j4V4\jti&\biri.\j4Tr4w. tss C2C1J除數不能为3 by 2eropackage Packagel;public class 抛岀异常{static void method On e() throws ArithmeticExceptio n{ Systemout .println( "在method。
ne 中”);} publicthrow new ArithmeticExcepti on( "除数为0");static void mai n(Stri ng args[]){try {int a=10;int b=0;int c=1;} catchSystem. out .println( "输岀结果为:"+a/b);(ArithmeticException e){System. out .println( "除数不能为0" +e.getMessage());}}实验题3编写一个程序,输入一个班某门课程成绩,统计及格人数、不及格人数平均分。
设计一个异常类,当输入的成绩小0分或大于100分时,抛出异常,程序将捕捉这个异常,并做出相应处理J ■package 实习异常;public class课程成绩{c int ;static int j?ass=0;atatlc int LiQpd占占・0;sta-tl c double 5tnn=O;void setGrade(double grade) th rows NullPointerException{ if(g*ad^MOO | | giad.a<0} {System.wh匸・F二二门牛丄訂成绩匸不苛土里");I 刍I S Console _ ■—鶯彫< terminated > :果徨戒给[Java Application] D:V Pro gram Fi lee \J a va\j d Id. 7 0_07\ b i n\ja vau(. ex e(2013-11 IfiRSh込0不合理成绩不合理及格人数为=2 不及格人数为:2 平均成绩为:60.0package 实习异常public class 课程成绩{double grade =0;static int n umber =0;static int pass =0;static int un pass =0;static double sum =0;setGrade( double grade) throws NullPoi nterExceptio n{voidif (grade>100 || grade<0){System. out .println( "成绩"+grade+ "不合理");}else {if (grade>=60){++ passelse {++ unpass}sum = sum +grade;this . grade =grade;}}public static void mai n( Stri ng args[]){int n umber=4;课程成绩people= new 课程成绩();try {people.setGrade(110);}catch (NullPoi nterExceptio n e){System. out .println( "成绩"+e.getMessage()+ "不合理“);}try {people.setGrade(-1);}catch (NullPoi nterExceptio n e){System. out .println( "成绩"+e.getMessage()+"不合理“);}people.setGrade(20);people.setGrade(100);people.setGrade(80);people.setGrade(40);System. out .pri ntl n( "及格人数为:"+pass );System. out .pri ntl n( "不及格人数为: "+unpass );System. out .pri ntl n( "平均成绩为:"+sum/ number);实验题4创建异常类的练习。
需要使用3个Java程序来实现:Ban k.javaIn sufficie ntF un dsExceptio n.javaExcepti on Demo.java创建银行类Bank,包括如下的方法:Bank( double balanee)deposite( double dAmount) withdrawal( double dAmount) show_bala nce()创建异常类:In sufficie ntFu ndsException 。
若取钱数大于余额则作为异常处理。
创建此异常类的思路是:(1)产生异常的条件是余额少于取额,因此是否抛出异常要判断条件(注意throw的使用)。
(2)取钱是withdrawal。
方法中定义的动作,因此在该方法中产生异常。
(3)处理异常安排在调用withdrawal。
的时候,因此withdrawal。
方法要声明异常,由上级方法调用(注意throws的使用)。
创建此异常类的具体要求:异常类中需添加excepMesagge()方法,用于调用Bank类的show_balance()方法,显示“您的取款金额为XXX但是账户余额仅为XXX操作不合法!” 创建主类:ExceptionDemo,用于测试新创建的两个类。
注意try-catch语句的使用,并且在错误处理的catch块中,使用InsufficientFundsException 异常类的excepMesagge()方法以及Exception类(父类)的toStri ng() 方法。
最后添加fin ally 块,输出“操作退出!”package Package;public class InsufficientFundsException __________________________________ extends Exception{String messagepublic In sufficie ntFu ndsExcepti on( double bala nee. double amou nt){message ="您的取款金额为"+balance+ ",但是账户余额为"+amount+ ",操作不合法! I!double bala nee, double amou nt) throwsIn sufficie ntFu ndsExcepti on{if (amount>balance){throw new In sufficie ntFu ndsExcepti on( amou nt, bala nee);} else {this . amount =amount; this . balanee=balanee;}}public doubleshow_bala nce(){System. out .println("您的取款金额为 "+amount +",账户剩余金额为:"+( balanee - amount ));returnamount ;}} package Package;public class Exception Demo {public static void mai n(Stri ng args[]){Bank amou nt1= new Ban k(); Bank amou nt2=new Ban k();try {amount1.withdrawal(1000.0, 2000.0);out .println(amount1.show_balance());retur n messagepackage Package;public class Bank {doublebala nee=0;double amou nt =0;public void withdrawal(System.catch (In sufficie ntFu ndsExcepti on e){System. out .println(e.toString());}try {amount2.withdrawal(1000.0, 200.0);;System. out .println(amount2.show_balance());}catch (In sufficie ntFu ndsExcepti on e){System. out .println(e.toString());}fin ally {System. out .println( "操作退岀!");}}Package ;l)ul)lic cZLass ExceptlonDemo {public static void maltL(Stu arga[] ) {Bank amount 1 =JieTr Banfc();Bank amount2 =neir Bank:();try{ amaunt 1. witKdra.tra.1 (1000 . □2 OOO. 0):Syg t 亡m * pr int■丄n (balance ());} _catch (Insuf 11c lent FutidsExcept-ion e) {Syat en・out・p r i nt 1 n(e ・t-cSt>ring ());}try{ amounts , withd.ravail (1000 . □, 2OO.O);:Sy9t em. c u t. p r int In (ainount.2 .2how balanee ());} ■catch (Insuf f ic lentFurudsExcept ion e) {悬? M 壬和 4 4 4- Vi"w 4i tS tr. 1 -«K * in 4 4^ 4 -B Vi. J S!»』I * ■「Fr obl«ris ti-' Jikiloc 風,MnlsrHion S Console S3■(t e nrn x ixat ed.)1Ex cep*ti Qxillieino [Java Applicita OIL] C; 'tPro grsm J lie s^Tava\.jr^5\biri\j ^.va.w, exe 您的改款全额^2000.0-徂畏永戶奈碱为丄口□口上,殊I卡不合法!您的取輸金额为2口口・6账尸剩余金^^:800_0300 ・□ 操作退出!二、实验/实习总结这次的实习,大多是看着书中的例题写的,很有点照猫画虎的味道。