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

C#项目switch-case输入匹配错误及菜单1-9范围异常处理咨询

问题产生原因

该异常本质是输入处理逻辑错误,具体根源如下:

  • 你当前使用了单个字符读取逻辑处理控制台输入,并未读取用户输入的完整内容:输入10时仅取到第一个字符'1',49正是ASCII编码中字符'1'对应的十进制数值。
  • 你的switch-case分支使用的是字符类型匹配(如case '1':)而非数值类型匹配,输入的任意长度内容只会按首位字符匹配对应分支,自然出现输入13匹配'1'、输入35匹配'3'的问题。
合法输入校验方案

实现逻辑

  • 放弃单字符读取方案,改用Console.ReadLine()读取用户输入的完整行,先移除首尾空白字符再校验。
  • 限制输入长度必须为1位,长度不符合直接判定为非法输入。
  • 仅接受1-9的数字字符,以及x/X作为退出指令,其余字符均判定为非法。
  • 非法输入给出明确提示后,循环要求用户重新输入,直到拿到合法值。

参考代码示例

char GetValidChoice()
{
    char validChoice;
    while (true)
    {
        Console.WriteLine("请输入操作选项(1-9执行对应功能,x/X退出程序):");
        string input = Console.ReadLine()?.Trim() ?? string.Empty;
        // 校验输入长度
        if (input.Length != 1)
        {
            Console.WriteLine("输入非法:仅允许输入1位字符,请重新输入");
            continue;
        }
        validChoice = input[0];
        // 校验输入范围
        if ((validChoice >= '1' && validChoice <= '9') || char.ToLower(validChoice) == 'x')
        {
            break;
        }
        Console.WriteLine("输入非法:仅允许输入1-9或x/X,请重新输入");
    }
    return validChoice;
}

拿到返回的合法字符后再执行switch-case分支即可,分支可以保持原有的case '1':/case 'x':格式,不会再出现错误匹配的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:48:04