ATM模拟程序开发问题:如何实现选4后返回初始ID输入界面
嘿,这个需求其实用嵌套循环就能轻松搞定!核心逻辑就是用外层循环管控ID输入流程,内层循环处理主菜单操作——当用户选4时,跳出内层菜单循环,自然就回到外层的ID输入界面啦。
我给你用Java写个完整的示例(毕竟ATM模拟常用这个语言),你可以直接参考:
public class ATMSimulator { public static void main(String[] args) { // 初始化10个账户,每个初始余额100美元 double[] accounts = new double[10]; for (int i = 0; i < accounts.length; i++) { accounts[i] = 100.0; } java.util.Scanner input = new java.util.Scanner(System.in); // 外层循环:负责ID输入与验证,一直循环直到程序终止 while (true) { System.out.print("Enter an ID: "); int id = input.nextInt(); // 验证ID合法性,不合法就重新输入 if (id < 0 || id >= 10) { System.out.println("Invalid ID! Please try again."); continue; // 直接回到外层循环开头,重新输入ID } // 内层循环:处理主菜单的操作逻辑 while (true) { System.out.println("\nMain Menu"); System.out.println("1: Check balance"); System.out.println("2: Withdraw"); System.out.println("3: Deposit"); System.out.println("4: Exit"); System.out.print("Enter a choice: "); int choice = input.nextInt(); switch (choice) { case 1: System.out.printf("Balance: $%.2f%n", accounts[id]); break; case 2: System.out.print("Enter amount to withdraw: "); double withdrawAmount = input.nextDouble(); if (withdrawAmount > accounts[id]) { System.out.println("Insufficient funds!"); } else { accounts[id] -= withdrawAmount; System.out.printf("New balance: $%.2f%n", accounts[id]); } break; case 3: System.out.print("Enter amount to deposit: "); double depositAmount = input.nextDouble(); accounts[id] += depositAmount; System.out.printf("New balance: $%.2f%n", accounts[id]); break; case 4: System.out.println("Exiting menu... Back to ID input."); break; // 先跳出switch语句 default: System.out.println("Invalid choice! Please try again."); } // 当用户选4时,跳出内层菜单循环,回到外层的ID输入环节 if (choice == 4) { break; } } } } }
关键逻辑拆解:
- 外层循环:用
while(true)实现无限循环,专门处理ID的输入和验证——如果ID不合法,用continue直接回到循环开头重新输入;合法则进入内层菜单循环。 - 内层循环:同样是无限循环,负责展示菜单、处理用户的取款/存款/查余额操作。当用户选择4时,通过
break跳出内层循环,程序就会回到外层循环的ID输入界面。
如果之后想给整个程序加一个“退出系统”的选项(比如输入ID为-1时终止程序),只需要在外层循环里加个判断就行,非常灵活。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

