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

如何在C#中接收int、char或string类型用户输入并适配现有代码

解决C#控制台菜单支持多类型输入的问题

你的原始代码仅能接收整数类型的菜单选择输入,下面是修改后的版本,支持整数、单个字符、完整字符串三种输入类型,同时保留菜单的正常逻辑(选择功能、退出、错误提示)。

修改后的完整代码

static void Main(string[] args)
{
    int selectedOption = -1;

    do
    {
        DisplayMenu();
        string input = Console.ReadLine().Trim(); // 先接收原始输入并去除首尾空格

        // 处理三种输入类型
        if (int.TryParse(input, out selectedOption))
        {
            // 整数输入:验证范围
            if (selectedOption < 0 || selectedOption > 5)
            {
                Console.WriteLine("无效选项!请重新输入。");
                selectedOption = -1; // 重置为无效值,继续循环
            }
        }
        else if (input.Length == 1)
        {
            // 单个字符输入:尝试转为数字
            char inputChar = input[0];
            if (char.IsDigit(inputChar))
            {
                selectedOption = inputChar - '0';
                if (selectedOption < 0 || selectedOption > 5)
                {
                    Console.WriteLine("无效选项!请重新输入。");
                    selectedOption = -1;
                }
            }
            else
            {
                Console.WriteLine("无效选项!请重新输入。");
                selectedOption = -1;
            }
        }
        else
        {
            // 完整字符串输入:匹配菜单文字(不区分大小写)
            switch (input.ToLower())
            {
                case "calculate sum":
                    selectedOption = 1;
                    break;
                case "calculate average":
                    selectedOption = 2;
                    break;
                case "display numbers":
                    selectedOption = 3;
                    break;
                case "display poem":
                    selectedOption = 4;
                    break;
                case "create numbers array":
                    selectedOption = 5;
                    break;
                case "to exit":
                case "exit":
                    selectedOption = 0;
                    break;
                default:
                    Console.WriteLine("无效选项!请重新输入。");
                    selectedOption = -1;
                    break;
            }
        }

        // 执行有效选项的逻辑(替换为你的实际功能代码)
        if (selectedOption >= 0 && selectedOption <= 5)
        {
            if (selectedOption != 0)
            {
                Console.WriteLine($"你选择了选项 {selectedOption}:{GetOptionName(selectedOption)}");
                // 在这里添加对应功能的实现代码
                Console.WriteLine("按任意键继续...");
                Console.ReadKey();
                Console.Clear();
            }
        }

    } while (selectedOption != 0);
}

static void DisplayMenu()
{
    Console.WriteLine("===== 主菜单 =====");
    Console.WriteLine("1) Calculate Sum");
    Console.WriteLine("2) Calculate Average");
    Console.WriteLine("3) Display Numbers");
    Console.WriteLine("4) Display Poem");
    Console.WriteLine("5) Create Numbers Array");
    Console.WriteLine("0) To Exit");
    Console.WriteLine();
    Console.WriteLine("请输入对应的数字、单个字符或完整选项文字进行选择:");
}

static string GetOptionName(int option)
{
    return option switch
    {
        1 => "Calculate Sum",
        2 => "Calculate Average",
        3 => "Display Numbers",
        4 => "Display Poem",
        5 => "Create Numbers Array",
        0 => "To Exit",
        _ => ""
    };
}

关键修改说明

  1. 统一接收原始输入:先将用户输入以字符串形式接收,避免强制转换引发异常,同时去除首尾空格处理输入格式问题。
  2. 分类型处理输入:
    • 优先尝试将输入转为整数,验证范围后确定选项
    • 若输入是单个字符,判断是否为数字字符,转换为对应整数选项
    • 若输入是长字符串,匹配菜单选项的完整文字(不区分大小写),映射到对应选项
  3. 优化错误处理:输入无效时不直接终止程序,而是提示错误并重置选项值,让用户可以重新输入
  4. 更新菜单提示:修改菜单提示文字,明确告知用户可接受的输入类型
  5. 选项名称映射:添加GetOptionName方法,方便执行功能时显示对应的选项名称

修改后,用户可以通过三种方式选择菜单:

  • 输入数字:1、0等
  • 输入单个数字字符:'1'、'0'等
  • 输入完整选项文字:Calculate Sum、Exit等(大小写不敏感)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:01:21