You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.1 KiB
66 lines
2.1 KiB
public class BankWithdrawalTest {
|
|
|
|
static class InsufficientFundsException extends Exception {
|
|
private double balance;
|
|
|
|
public InsufficientFundsException(double balance) {
|
|
super("余额不足,当前余额:" + balance + " 元");
|
|
this.balance = balance;
|
|
}
|
|
|
|
public double getBalance() {
|
|
return balance;
|
|
}
|
|
}
|
|
|
|
static class Account {
|
|
private double balance;
|
|
|
|
public Account(double initialBalance) {
|
|
this.balance = initialBalance;
|
|
}
|
|
|
|
public void withdraw(double amount) throws InsufficientFundsException {
|
|
if (amount <= 0) {
|
|
throw new IllegalArgumentException("取款金额必须大于0");
|
|
}
|
|
if (amount > balance) {
|
|
throw new InsufficientFundsException(balance);
|
|
}
|
|
balance -= amount;
|
|
System.out.println("取款成功!取出:" + amount + " 元,剩余余额:" + balance + " 元");
|
|
}
|
|
|
|
public double getBalance() {
|
|
return balance;
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
Account myAccount = new Account(1000.0);
|
|
|
|
System.out.println("--- 测试1:正常取款 ---");
|
|
try {
|
|
myAccount.withdraw(300);
|
|
} catch (InsufficientFundsException e) {
|
|
System.out.println("错误:" + e.getMessage());
|
|
}
|
|
|
|
System.out.println("\n--- 测试2:余额不足取款 ---");
|
|
try {
|
|
myAccount.withdraw(800);
|
|
} catch (InsufficientFundsException e) {
|
|
System.out.println("取款失败:" + e.getMessage());
|
|
System.out.println("提示:请检查取款金额,当前账户余额为 " + e.getBalance() + " 元");
|
|
}
|
|
|
|
System.out.println("\n--- 测试3:非法金额取款 ---");
|
|
try {
|
|
myAccount.withdraw(-50);
|
|
} catch (IllegalArgumentException e) {
|
|
System.out.println("错误:" + e.getMessage());
|
|
} catch (InsufficientFundsException e) {
|
|
System.out.println("取款失败:" + e.getMessage());
|
|
}
|
|
}
|
|
}
|
|
|