应使用卫语句提前返回:先检查amount≤0提示“取款金额必须大于0”,再检查amount>balance提示“余额不足”,最后检查amount>MAX_WITHDRAW提示“单笔最高取款5000元”。
用 if-else 实现取款金额校验
用户输入取款金额后,必须立刻判断是否合法:不能为负数、不能超过账户余额、不能超过单笔限额(比如5000元)。if 嵌套容易出错,建议用「卫语句」提前拦截:
- 先检查
amount ,直接提示“请输入有效金额” - 再检查
amount > balance,提示“余额不足” - 最后检查
amount > MAX_WITHDRAW(如5000),提示“单笔最高取款5000元”
避免写成 if (amount > 0 && amount 这种长条件——可读性差,出错时难定位是哪个条件不满足。
switch 处理主菜单选项
ATM主界面通常有“查询余额”“取款”“存款”“退出”四个选项,用 switch 比一串 if-else if 更清晰。注意两点:
- 用户输入应先用
Integer.parseInt()转成int,但必须包在try-catch里防输入字母导致NumberFormatException -
default分支不能空着,要明确提示“无效选项,请重新选择”并继续循环,否则输错就直接退出了
示例片段:
switch (choice) {
case 1: showBalance(); break;
case 2: withdraw(); break;
case 3: deposit(); break;
case 4: System.out.println("感谢使用"); return;
default: System.out.println("无效选项"); continue;
}
while 循环控制ATM会话生命周期
整个ATM流程必须持续运行,直到用户主动选“退出”,所以外层用 while (true) 最直接。但要注意: