java中,使用try…catch语句和finally 语录模块模拟一个取款过程。某个银行账户现有余额1023.79元,且银行规定每次取款金额必须是整数,当在控制台上输入的取款金额不是证书时,会捕捉到数字格式转换异常
时间: 2024-10-10 21:17:36 浏览: 28
在Java中,你可以使用`try...catch`语句来捕获并处理可能出现的异常情况,而`finally`块则用于确保程序中无论是否发生异常,都会执行某些关键操作,比如资源清理。假设我们有一个简单的银行账户类`BankAccount`,我们可以模拟一个取款过程如下:
```java
public class BankAccount {
private double balance;
public BankAccount(double initialBalance) {
this.balance = initialBalance;
}
// 模拟取款方法,包含try-catch-finally结构
public void withdraw(double amount) {
try {
// 将输入金额转为double类型,并检查是否为整数
if (amount % 1 != 0) {
throw new NumberFormatException("取款金额必须是整数!");
}
// 减少余额
balance -= amount;
System.out.printf("成功取款 %.2f 元,当前余额 %.2f 元\n", amount, balance);
} catch (NumberFormatException e) {
// 当捕获到NumberFormatException时,打印错误信息
System.err.println(e.getMessage());
} finally {
// 无论是否抛出异常,always print the current balance
System.out.printf("最终余额 %.2f 元\n", balance);
}
}
}
// 使用示例
public static void main(String[] args) {
BankAccount account = new BankAccount(1023.79);
account.withdraw(500); // 成功取款
account.withdraw(500.50); // 抛出异常,因为取款金额非整数
}
```
在这个例子中,用户试图取款时,如果输入金额不是整数,就会抛出`NumberFormatException`,然后在`catch`块中捕获这个异常并给出相应的提示。`finally`块确保了无论如何都会显示更新后的余额。
阅读全文