如何在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", _ => "" }; }
关键修改说明
- 统一接收原始输入:先将用户输入以字符串形式接收,避免强制转换引发异常,同时去除首尾空格处理输入格式问题。
- 分类型处理输入:
- 优先尝试将输入转为整数,验证范围后确定选项
- 若输入是单个字符,判断是否为数字字符,转换为对应整数选项
- 若输入是长字符串,匹配菜单选项的完整文字(不区分大小写),映射到对应选项
- 优化错误处理:输入无效时不直接终止程序,而是提示错误并重置选项值,让用户可以重新输入
- 更新菜单提示:修改菜单提示文字,明确告知用户可接受的输入类型
- 选项名称映射:添加
GetOptionName方法,方便执行功能时显示对应的选项名称
修改后,用户可以通过三种方式选择菜单:
- 输入数字:
1、0等 - 输入单个数字字符:
'1'、'0'等 - 输入完整选项文字:
Calculate Sum、Exit等(大小写不敏感)
内容的提问来源于stack exchange,提问作者juice
相关产品推荐
相关产品推荐

