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

C#中Switch Case的E选项失效且报‘输入字符串格式不正确’错误求助

C#插槽预订功能退出异常问题解决
  • 问题根源:你的switch分支处理'E'/'e'时,没有彻底跳出外层的while(true)循环,导致程序继续执行到读取插槽编号的代码,而此时输入的'E'/'e'无法转换为整数,触发格式错误。

  • 具体修复步骤:

    1. 完善Switch分支的退出逻辑
      在'E'/'e'的case块中,执行退出提示后,要确保直接跳出外层的while循环。可以用跳转标记或者在switch结束后判断选项再执行break。
      示例代码片段:

      while (true)
      {
          Console.WriteLine("选择操作:B-预订 | C-取消 | E-退出");
          string input = Console.ReadLine()?.Trim().ToLower();
      
          switch (input)
          {
              case "b":
                  // 执行预订逻辑
                  break;
              case "c":
                  // 执行取消逻辑
                  break;
              case "e":
                  Console.WriteLine("程序即将退出");
                  goto ExitLoop; // 直接跳转到循环外
              default:
                  Console.WriteLine("无效选项,请重新输入");
                  continue; // 回到循环开头,避免执行后续代码
          }
      
          // 仅当选择B/C时才执行以下插槽输入逻辑
          Console.WriteLine("输入插槽编号:");
          // 用TryParse替代Convert.ToInt32,避免非数字输入报错
          if (int.TryParse(Console.ReadLine(), out int slot))
          {
              // 处理插槽相关操作
          }
          else
          {
              Console.WriteLine("请输入有效的数字编号");
          }
      }
      ExitLoop: // 跳转标记,用于退出循环
      
    2. 替换不安全的类型转换
      用int.TryParse()替代Convert.ToInt32()处理控制台输入,前者能在输入非数字时返回false,避免抛出异常,同时可以给出友好提示。

    3. 优化代码执行路径
      确保只有选择需要操作插槽的选项(B/C)时,才执行读取插槽编号的代码。用continue在遇到无效选项时直接回到循环开头,避免无用的代码执行。

内容的提问来源于stack exchange,提问作者Daniel Joshua Ureta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:20:36