实验题3
创建异常类的练习。需要使用3个Java程序来实现:
Bank.java
InsufficientFundsException.java
ExceptionDemo.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 back11;
public class Bank {
double balance;
public Bank(double balance) {
this.balance = balance;
}
public void deposite(double dAmount) {
this.balance += dAmount;
}
public void withdrawl(double dAmount) throws InsufficientFundsExpection{
if (dAmount > balance) {
throw new InsufficientFundsExpection();
}
balance -= dAmount;
}
public double show_balance() {
return this.balance;
}
}
package back11;
import java.util.*;
public class ExceptionDemo {
public static void main(String[] args) {
Scanner rd = new Scanner(System.in);
System.out.println("请创建账户:");
double d = rd.nextDouble();
Bank bk = new Bank(d);
try {
System.out.println("请存钱:");
d = rd.nextDouble();
bk.deposite(d);
System.out.println("请输入取钱金额:");
d = rd.nextDouble();
bk.withdrawl(d);
rd.close();
} catch (InsufficientFundsExpection e) {
System.out.println(e.excepMessage(bk.show_balance(), d));
System.out.println(e.toString());
}
finally{
System.out.println("您当前的余额为: " + bk.show_balance());
System.out.println("操作退出!!!");
}
}
}
package back11;
public class InsufficientFundsExpection extends Exception{
public InsufficientFundsExpection() {}
public InsufficientFundsExpection(String str) {
super(str);
}
public String excepMessage(double d1, double d2) {
String s1 = String.valueOf(d1);
String s2 = String.valueOf(d2);
String s3 = "您的取款金额为"+s1+", 但是账户余额仅为" + s2;
return s3;
}
}