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

while循环内switch case接收字符串输入后无法继续运行问题

故障原因
  • 核心问题出在input()和menu()的输入读取逻辑中:如果你的代码使用Scanner.nextInt()读取整数输入,当用户输入字符串时,该方法会直接抛出InputMismatchException运行时异常。
  • 你现有代码没有对该异常做捕获处理,异常抛出后会直接终止程序运行,导致while循环中断。
  • 而输入22这类合法数字时,不会触发异常,只会进入switch的default分支输出错误提示,循环可以正常执行。
修复方案

首先修改输入读取逻辑,增加异常捕获和非法输入清理步骤,避免异常未处理导致程序崩溃,参考input()方法的修正实现:

import java.util.InputMismatchException;
import java.util.Scanner;

public int input() {
    Scanner scanner = new Scanner(System.in);
    int inputNum;
    while (true) {
        try {
            inputNum = scanner.nextInt();
            return inputNum;
        } catch (InputMismatchException e) {
            // 输出输入错误提示
            System.out.println("Felaktig inmatning! Ange ett giltigt nummer.");
            // 清空缓冲区残留的非法字符串,否则下次读取会重复触发异常
            scanner.nextLine();
        }
    }
}

如果你的menu()方法中也存在读取用户整数输入的逻辑,也需要同步添加上述的异常捕获和缓冲区清理逻辑。

修改完成后,无论用户输入非数字字符串还是不在case分支内的数字,都会提示错误后回到while循环,允许用户重新输入,不会再出现程序直接停止的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:57:03