java中可用do-while循环+scanner在控制台模拟atm交互:先显示菜单并处理输入,校验取款金额(正整数、100倍数、不超余额与限额),支持取款、查询余额和退出功能。

Java 中无法直接实现图形化人机交互界面(如 Windows 窗口或网页),但可以用 do-while 循环 + 控制台输入输出(Scanner)模拟 ATM 取款流程的交互逻辑。核心在于:用 do-while 保证菜单至少显示一次,并持续等待用户有效选择,直到主动退出。
用 do-while 构建主循环驱动交互流程
do-while 特别适合这类“先执行、再判断”的场景——用户一启动程序就看到主菜单,选完操作后决定是否继续。它比 while 更自然,避免首次运行前还要手动调用一次菜单打印。
- 将主菜单显示、用户输入、选项处理全部放在
do块内 - 循环条件设为
!exitRequested或choice != 0等明确退出信号 - 每次循环末尾不自动刷新状态,需在处理完取款/查询等操作后,让用户按回车或自动回到主菜单
结合 Scanner 实现用户输入与业务校验
控制台交互依赖 java.util.Scanner 读取用户键入。关键点不是“能输”,而是“输得安全、判得合理”:
- 用
scanner.hasNextInt()预判输入是否为整数,防止输入字母导致程序崩溃 - 取款金额必须校验:大于 0、是 100 的整数倍、不超过账户余额和 ATM 钞箱限额(可设常量
MAX_WITHDRAW = 5000) - 错误输入时给出明确提示(如“请输入有效的取款金额(100 元整数倍)”),不退出当前循环,让用户重试
模拟关键 ATM 业务逻辑(余额、取款、退出)
不需要真实银行接口,用几个变量就能体现流程实质:
- 定义
double balance = 1250.0;模拟初始余额 - 取款操作中:检查金额 → 扣减余额 → 输出“取款成功,当前余额:xxx” → 记录简单日志(如打印时间戳或操作类型)
- 选择“0. 退出系统”时设置退出标志,
do-while下次判断即终止 - 可加一个“3. 查询余额”选项,强化交互完整性
完整结构示例(精简可运行片段)
以下为可直接编译运行的核心骨架(已省略 import 和 class 声明):
int choice;
boolean exit = false;
double balance = 1250.0;
Scanner sc = new Scanner(System.in);
do {
System.out.println("\n=== ATM 取款系统 ===");
System.out.println("1. 取款");
System.out.println("2. 查询余额");
System.out.println("0. 退出系统");
System.out.print("请选择操作:");
if (sc.hasNextInt()) {
choice = sc.nextInt();
switch (choice) {
case 1:
System.out.print("请输入取款金额(100 元整数倍):");
if (sc.hasNextInt()) {
int amount = sc.nextInt();
if (amount > 0 && amount % 100 == 0 && amount
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











