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

如何让输入字母触发switch语句default分支的菜单提示?

解决输入非数字导致程序崩溃的问题

问题出在Int32.Parse(Console.ReadLine())这行代码:当输入内容无法转换为整数时(比如字母、特殊字符),Parse方法会直接抛出FormatException,导致程序崩溃。要实现输入非数字时触发default分支,需要用安全的整数解析方法——Int32.TryParse。

修改方案

  1. 用Int32.TryParse替代Int32.Parse,该方法不会抛出异常,而是返回布尔值表示解析是否成功,同时通过out参数返回解析后的整数。
  2. 如果解析失败,将input设为一个不在1-4范围内的值(比如0),这样switch语句就会进入default分支,触发错误提示。

修改后的完整代码

internal class Program
{
    static void Main(string[] args)
    { 
        bool minBool = true;
        string foreMal = null;               
        
        while (minBool)
        {
            Console.WriteLine("Välkommen till ryggsäcken. Vad vill du göra?: ");
            Console.WriteLine("[1] Lägg till ett föremål");
            Console.WriteLine("[2] Skriv ut innehållet");
            Console.WriteLine("[3] Rensa innehållet");
            Console.WriteLine("[4] Avsluta");
            
            // 安全解析输入
            int input;
            bool isValidInput = Int32.TryParse(Console.ReadLine(), out input);
            
            // 如果解析失败,设置input为0(不在1-4范围内)
            if (!isValidInput)
            {
                input = 0;
            }
            
            switch (input)
            {
                case 1:
                    Console.WriteLine("Var god ange ett föremål");
                    foreMal = Console.ReadLine();
                    break;
                
                case 2:
                    Console.WriteLine("Ryggsäcken innehåller: " + " " + foreMal); 
                    break;
                
                case 3:
                    Console.WriteLine("Ryggsäcken rensas");
                    foreMal = "";
                    break;
                
                case 4:
                    minBool = false;
                    break;
            
                default:
                    Console.WriteLine("Felaktigt menyval");
                    break;
            }
        }
    }
}

补充说明

  • Int32.TryParse的第一个参数是要解析的字符串,第二个out参数会存储解析后的整数(如果成功)。
  • 当输入非数字时,isValidInput会变为false,此时将input设为0,确保switch进入default分支,和输入5等无效数字的处理逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:01:16