一、实验/实习过程实验题1在程序中产生一个ArithmeticException类型被0除的异常,并用catch 语句捕获这个异常。
最后通过ArithmeticException类的对象e 的方法getMessage给出异常的具体类型并显示出来。
package Package1;public class除数0 {public static void main(String args[]){try{int a=10;int b=0;System.out.println("输出结果为:"+a/b);}catch(ArithmeticException e){System.out.println("除数不能为0"+e.getMessage());}}}实验题2在一个类的静态方法methodOne()方法内使用throw 产生ArithmeticException异常,使用throws子句抛出methodOne()的异常,在main方法中捕获处理ArithmeticException异常。
package Package1;public class抛出异常 {static void methodOne() throws ArithmeticException{System.out.println("在methodOne中");throw new ArithmeticException("除数为0");}public static void main(String args[]){try{int a=10;int b=0;int c=1;System.out.println("输出结果为:"+a/b);}catch(ArithmeticException e){System.out.println("除数不能为0"+e.getMessage());}}}实验题3编写一个程序,输入一个班某门课程成绩,统计及格人数、不及格人数平均分。
设计一个异常类,当输入的成绩小0分或大于100分时,抛出异常,程序将捕捉这个异常,并做出相应处理。
package实习异常;public class课程成绩 {double grade=0;static int number=0;static int pass=0;static int unpass=0;static double sum=0;void setGrade(double grade) throws NullPointerException{if(grade>100 || grade<0){System.out.println("成绩"+grade+"不合理");}else{if(grade>=60){++pass;}else{++unpass;}sum=sum+grade;this.grade=grade;}}public static void main(String args[]){int number=4;课程成绩 people=new课程成绩();try{people.setGrade(110);}catch(NullPointerException e){System.out.println("成绩"+e.getMessage()+"不合理");}try{people.setGrade(-1);}catch(NullPointerException e){System.out.println("成绩"+e.getMessage()+"不合理");}people.setGrade(20);people.setGrade(100);people.setGrade(80);people.setGrade(40);System.out.println("及格人数为:"+pass);System.out.println("不及格人数为:"+unpass);System.out.println("平均成绩为:"+sum/number);}}实验题4创建异常类的练习。
需要使用3个Java程序来实现:Bank.javaInsufficientFundsException.javaExceptionDemo.java创建银行类Bank,包括如下的方法:Bank(double balance)deposite(double dAmount)withdrawal(double dAmount)show_balance()创建异常类:InsufficientFundsException。
若取钱数大于余额则作为异常处理。
创建此异常类的思路是:(1)产生异常的条件是余额少于取额, 因此是否抛出异常要判断条件(注意throw的使用)。
(2)取钱是withdrawal()方法中定义的动作,因此在该方法中产生异常。
(3)处理异常安排在调用withdrawal()的时候,因此withdrawal()方法要声明异常,由上级方法调用(注意throws的使用)。
创建此异常类的具体要求:异常类中需添加 excepMesagge()方法,用于调用Bank类的show_balance()方法,显示“您的取款金额为XXX,但是账户余额仅为XXX,操作不合法!”。
创建主类:ExceptionDemo,用于测试新创建的两个类。
注意try-catch语句的使用,并且在错误处理的catch块中,使用InsufficientFundsException异常类的excepMesagge()方法以及Exception类(父类)的toString()方法。
最后添加finally块,输出“操作退出!”。
package Package;public class InsufficientFundsException extends Exception{String message;public InsufficientFundsException(double balance,double amount){message="您的取款金额为"+balance+",但是账户余额为"+amount+",操作不合法!";}public String toString(){return message;}}package Package;public class Bank {double balance=0;double amount=0;public void withdrawal(double balance,double amount) throws InsufficientFundsException{ if(amount>balance){throw new InsufficientFundsException(amount, balance);}else{this.amount=amount;this.balance=balance;}}public double show_balance(){System.out.println("您的取款金额为"+amount+",账户剩余金额为:"+(balance-amount));return amount;}}package Package;public class ExceptionDemo {public static void main(String args[]){Bank amount1=new Bank();Bank amount2=new Bank();try{amount1.withdrawal(1000.0, 2000.0);System.out.println(amount1.show_balance());}catch(InsufficientFundsException e){System.out.println(e.toString());}try{amount2.withdrawal(1000.0, 200.0);;System.out.println(amount2.show_balance());}catch(InsufficientFundsException e){System.out.println(e.toString());}finally{System.out.println("操作退出!");}}}二、实验/实习总结这次的实习,大多是看着书中的例题写的,很有点照猫画虎的味道。
想想自己对待学习的态度还是有些不认真,就像第四个题目,完全桉书中模式套了上去,可能和老师您的要求有些出入,但是自己就算是这样,也不能清楚的给你解答,自己有点犯迷糊,你问我这两种方法有什么区别,我不能给出正确的回答,因为题目要求我还没弄明白,书中的解答我也只是知之甚少,看来还要下很大的功夫,先把有些基本方法,对象,概念啥的弄明白,免得以后外人问我Java问题,我却不能用规范的语言给人家表达。
Well done!2013-11-04。