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

Java程序触发switch default分支后输入quit无法退出问题求助

问题分析与修复方案

问题根源

输入非法指令触发switch的default分支时,代码调用了enterCommand(),这会创建新的输入循环嵌套在原循环中。当你输入"quit",只是退出了内层的新循环,程序会回到外层最初的while循环,继续要求输入,导致无法正常退出程序。

修复方案(保留switch语句)

核心思路是让输入循环的控制权完全由enterCommand()负责,checkCommand()仅处理指令逻辑,不再递归调用输入方法。

修复后的代码:

import java.util.Scanner;

public class Main {
    static void checkCommand(String command) {
        switch (command) {
            case "add" -> System.out.println("added");
            case "access" -> System.out.println("accessed");
            case "compare" -> System.out.println("compared");
            default -> System.out.println("Invalid command, please try again");
        }
    }

    static void enterCommand() {
        Scanner usrInput = new Scanner(System.in);
        String input;
        do {
            System.out.print(">>> ");
            input = usrInput.nextLine();
            if (!input.equals("quit")) {
                checkCommand(input);
            }
        } while (!input.equals("quit"));
    }

    public static void main(String[] args) {
        enterCommand();
    }
}

修改说明

  1. 移除checkCommand()中的enterCommand()调用,避免嵌套循环导致的退出混乱
  2. 将原while循环改为do-while结构,确保先输出提示符再接收输入,逻辑更连贯
  3. Scanner仅初始化一次,避免重复创建资源
  4. 所有输入的读取和循环终止判断都由enterCommand()统一处理,退出逻辑单一可靠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:15:36