C#中如何使用同一个变量分别接收字符串输入和整型输入
解决方案
错误原因
代码的核心问题是没有对输入内容做分支判断,不管用户输入的是数字还是退出指令,都直接执行Convert.ToInt32转换,当输入为OK/ok这类非数字字符串时,自然会触发格式错误异常。
修正后代码
string input = ""; int sum = 0; do { Console.WriteLine("Insert the number or OK (ok) for exit: "); input = Console.ReadLine(); // 优先判断是否为退出指令,忽略大小写匹配 if (input.Equals("OK", StringComparison.OrdinalIgnoreCase)) { break; } // 安全转换整型,转换成功才执行累加 if (int.TryParse(input, out int number)) { sum += number; } else { // 可选:非法输入提示 Console.WriteLine("输入无效,请输入数字或者OK/ok退出"); } } while (true); Console.WriteLine($"累加和为:{sum}");
逻辑说明
- 读取输入后优先判断是否为退出指令,使用
StringComparison.OrdinalIgnoreCase参数可以直接匹配大小写的ok,无需写两个判断条件 - 用
int.TryParse替代Convert.ToInt32做类型转换,该方法不会抛出异常,转换成功返回true同时把结果传给输出参数,失败返回false,完美适配输入内容不确定的场景 - 循环条件直接设为
true,触发退出指令时主动break即可,逻辑更简洁清晰
内容的提问来源于stack exchange,提问作者ahmedskulj10
相关产品推荐
相关产品推荐

