You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:20:05