ATM菜单切换用while(true)循环维持主界面,通过switch或if-else根据用户输入跳转功能分支,用balance变量模拟账户状态,配合输入校验确保交互稳定。

用流程控制逻辑模拟ATM菜单切换,核心是用条件判断(if-else / switch)驱动状态流转,配合循环(while)维持主界面持续运行,再通过用户输入决定下一步跳转——不需图形界面,纯文本就能清晰体现“选功能→执行→返回”的交互逻辑。
用 while 循环维持主菜单常驻
ATM不能执行完一个操作就退出,必须一直显示菜单等待下一次选择。用 while (true) 搭配 break 退出是最直接的方式:
- 循环体里先打印菜单选项(如“1. 查询余额 2. 取款 3. 存款 0. 退出”)
- 读取用户输入的数字或命令
- 根据输入进入对应分支处理;若输入 0,则 break 跳出循环,程序结束
用 switch 或 if-else 实现功能路由
把每个菜单项映射为一个独立逻辑块,避免所有代码堆在主循环里:
- 推荐用 switch (choice):简洁、可读性强,适合整数选项(如 1/2/3/0)
- 若需支持字符串命令(如 "balance"、"withdraw"),改用 if-else + equals()
- 每个 case / 分支内只做该功能的事(如取款要验证余额、更新变量),完成后自动回到循环开头,重新显示菜单
用变量模拟账户状态,让操作有记忆
菜单切换不是孤立跳转,而是围绕一个账户展开。需要定义基础变量并贯穿整个流程:
- 声明 double balance = 1000.0; 模拟初始余额
- 取款时检查 if (amount > balance),失败则提示,不修改余额
- 存款、取款后都要更新 balance += amount 或 balance -= amount
- 查询余额直接输出当前 balance 值——所有功能看到的是同一份数据
加入基础输入校验,防止崩溃
控制台输入不可靠,几行校验能让体验更稳:
- 用 Scanner.hasNextInt() 判断是否输入了数字,否则提示“请输入有效选项”,并 scanner.next() 清掉非法输入
- 对取款/存款金额,额外检查是否 > 0,避免负数或零操作
- 不在 switch 中处理非法数字(如输入 5),而是在外层加 default 提示“无效选项,请重试”
不复杂但容易忽略:菜单切换的本质不是“跳页面”,而是“改状态+重绘”。只要主循环不退出、变量持续有效、每次输入都明确导向一个行为块,一个可交互的 ATM 骨架就立住了。

















