一、实验/实习过程
实验题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;
"输出结果为:"+a/b);
}
catch(ArithmeticException e){
"除数不能为0"+());
}
}
}
实验题2在一个类的静态方法methodOne()方法内使用throw 产生ArithmeticException异常,使用throws子句抛出methodOne()的异常,在main
方法中捕获处理ArithmeticException异常。
package Package1;
public class抛出异常 {
static void methodOne() throws ArithmeticException{
"在methodOne中");
throw new ArithmeticException("除数为0");
}
public static void main(String args[]){
try{
int a=10;
int b=0;
int c=1;
"输出结果为:"+a/b);
}
catch(ArithmeticException e){
"除数不能为0"+());
}
}
}
实验题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){
"成绩"+grade+"不合理");
}
else{
if(grade>=60){
++pass;
}
else{
++unpass;
}
sum=sum+grade;
=grade;
}
}
public static void main(String args[]){
int number=4;
课程成绩 people=new课程成绩();
try{
(110);
}
catch(NullPointerException e){
"成绩"+()+"不合理");
}
try{
(-1);
}
catch(NullPointerException e){
"成绩"+()+"不合理");
}
(20);
(100);
(80);
(40);
"及格人数为:"+pass);
"不及格人数为:"+unpass);
"平均成绩为:"+sum/number);
}
}
实验题4创建异常类的练习。
需要使用3个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{
=amount;
=balance;
}
}
public double show_balance(){
"您的取款金额为"+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{, ;
}
catch(InsufficientFundsException e){
}
try{, ;;
}
catch(InsufficientFundsException e){
}
finally{
"操作退出!");
}
}
}
二、实验/实习总结
这次的实习,大多是看着书中的例题写的,很有点照猫画虎的味道。
想想自己对待学习的态度还是有些不认真,就像第四个题目,完全桉书中模式套了上去,可能和老师您的要求有些出入,但是自己就算是这样,也不能清楚的给你解答,自己有点犯迷糊,你问我这两种方法有什么区别,我不能给出正确的回答,因为题目要求我还没弄明白,书中的解答我也只是知之甚少,看来还要下很大的功夫,先把有些基本方法,对象,概念啥的弄明白,免得以后外人问我Java问题,我却不能用规范的语言给人家表达。
Well done!
2013-11-04。