模拟银行账户存款、取款和查询功能,账户余额最少保留10元,存款为负数是无效。 要求:用异常处理存款出现负数和余额小于10元的情况 按照任务描述,要求如下: 定义银行类Bank,五个属性账号countNo、地址address、余额balance、最小存款min默认值为10、储户姓名name,一个构造方法初始化账号、地址、余额、姓名,三个方法:存款void save(double num)、取款boolean take(double num)、查询double query()。 定义异常类DepositException——当无效钱数(小于0)存入时。该类继承Exception,覆盖public String toString()方法,返回提示信息“存款不能为负数”。 定义异常类OverDrawnException——当取出钱后余额小于10的情况。该类继承Exception,覆盖public String toString()方法,返回提示信息“账户余额最少保留10元”。 修改void save(double num)方法,如果发现num小于0,则抛出一个DepositException异常,并在save方法中声明异常自身不处理,由调用它的函数(这里是TestBank类的main()方法)处理 修改Bank类的boolean take(double num)方法。如果发现(余额-num)<10则抛出一个OverDrawnException,并在take方法中进行捕获,捕获后打印异常的toString返回的信息。 测试类TestBank,写代码实现下列过程。新建一个账户,开户信息为“001”、“张三”、“天源路789号”,200,存入90元,再存入-90元,取款281元,再取款280元。捕获所有可能发生的异常
时间: 2024-04-06 11:35:07 浏览: 144
好的,这是一个比较具体的问题,我可以为您提供相应的代码实现,代码如下:
```java
// DepositException.java
public class DepositException extends Exception {
@Override
public String toString() {
return "存款不能为负数";
}
}
// OverDrawnException.java
public class OverDrawnException extends Exception {
@Override
public String toString() {
return "账户余额最少保留10元";
}
}
// Bank.java
public class Bank {
private String countNo;
private String address;
private double balance;
private double min = 10.0;
private String name;
public Bank(String countNo, String address, double balance, String name) {
this.countNo = countNo;
this.address = address;
this.balance = balance;
this.name = name;
}
public void save(double num) throws DepositException {
if (num < 0) {
throw new DepositException();
}
balance += num;
}
public boolean take(double num) {
try {
if (balance - num < min) {
throw new OverDrawnException();
}
balance -= num;
return true;
} catch (OverDrawnException e) {
System.out.println(e.toString());
return false;
}
}
public double query() {
return balance;
}
}
// TestBank.java
public class TestBank {
public static void main(String[] args) {
Bank bank = new Bank("001", "天源路789号", 200, "张三");
try {
bank.save(90);
bank.save(-90);
} catch (DepositException e) {
System.out.println(e.toString());
}
bank.take(281);
bank.take(280);
System.out.println("账户余额为:" + bank.query());
}
}
```
在这段代码中,我们定义了三个类:Bank、DepositException 和 OverDrawnException。Bank 类是银行账户的实现,DepositException 和 OverDrawnException 分别是存款和取款可能出现的异常。
在 Bank 类中,我们实现了存款、取款和查询的方法。在存款方法中,我们使用异常处理机制来防止存入负数的情况。在取款方法中,我们使用了 try-catch 语句来捕获可能出现的 OverDrawnException 异常,并输出异常信息。在查询方法中,我们直接返回账户余额。
在 TestBank 类中,我们创建了一个 Bank 类型的对象,并对其进行存款、取款和查询操作。在存款操作中,我们故意存入了一个负数,会触发 DepositException 异常,我们使用 try-catch 语句来捕获该异常,并输出异常信息。在取款操作中,我们故意取出了一个超过账户余额的金额,会触发 OverDrawnException 异常,我们使用了 try-catch 语句来捕获该异常,并输出异常信息。最后,我们输出账户余额。
希望这段代码能够帮助您解决问题,如有疑问请随时提出。
阅读全文