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

Java中如何控制switch菜单循环执行且可终止?

解决菜单无限循环的问题

我来帮你搞定这个菜单停不下来的问题~你的代码现在陷入无限循环主要有这几个原因:

  • quit变量初始设为false后,整个循环过程中从来没有修改过它的值,导致do-while(!quit)的条件永远为真,循环根本停不下来
  • 你只在menu方法开头读取了一次用户选择,循环内部没有重新获取新的输入,程序无法响应用户后续的操作
  • 当前菜单没有提供退出选项,用户没有主动终止程序的途径

下面是修改后的完整代码,我会标注关键修改点:

import java.util.Scanner;
public class MainMenu {
    public static void main(String[] args) {
        // 只创建一次Scanner实例,避免重复创建资源
        Scanner scanner = new Scanner(System.in);
        menu(scanner);
        scanner.close(); // 用完后关闭Scanner
    }

    private static void menu(Scanner scanner) {
        int userChoice;
        boolean quit = false;
        
        do {
            // 每次循环都重新显示菜单
            System.out.println("Choose an Option");
            System.out.println("1 - FIND");
            System.out.println("2 - IN-SHUFFLE");
            System.out.println("3 - OUT-SHUFFLE");
            System.out.println("4 - QUIT"); // 新增退出选项
            
            userChoice = scanner.nextInt();
            
            switch (userChoice) {
                case 1:
                    System.out.println("\nExecuting FIND operation...\n");
                    // Deck.findTop(); // 调用你的业务方法
                    break;
                case 2:
                    System.out.println("\nExecuting IN-SHUFFLE operation...\n");
                    // 调用你的IN-SHUFFLE方法
                    break;
                case 3:
                    System.out.println("\nExecuting OUT-SHUFFLE operation...\n");
                    // 调用你的OUT-SHUFFLE方法
                    break;
                case 4:
                    System.out.println("\nExiting program...");
                    quit = true; // 设置quit为true,让循环结束
                    break;
                default:
                    System.out.println("\nInvalid Option! Please choose again.\n");
                    break;
            }
        } while (!quit);
    }
}

关键修改说明:

  1. 新增退出选项:在菜单里添加了4 - QUIT,用户可以通过选择这个选项终止程序
  2. 循环内重新获取输入:把读取用户选择的代码移到了do-while循环内部,每次循环都会重新读取用户的新选择
  3. 控制循环终止:当用户选择4时,将quit设为true,此时!quit变为false,循环结束
  4. 优化Scanner资源:在main方法中创建Scanner实例并传递给menu方法,避免重复创建,使用完后关闭Scanner

现在运行代码,用户执行完操作后可以继续选择其他选项,或者选择4退出程序,不会再无限循环啦~

内容的提问来源于stack exchange,提问作者helen986

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:18