C#文本计算器:String转int失败及数值类型转换问题求助
C#文本计算器字符串转数值类型解决方案
你的核心问题是没有把用户输入的字符串转换成可进行算术运算的数值类型:
- 字符串用
+会执行拼接(比如输入"2"+"3"会输出"23"而不是5) -*/运算符不支持字符串,直接使用会编译报错
下面是修复后的代码,同时加入了输入有效性验证,避免用户输入非数字导致程序崩溃:
using System; namespace Calculator { class Program { static void Main(string[] args) { Console.WriteLine("What operation would you like? + - * /: "); string operation = Console.ReadLine(); Console.WriteLine("Type first number: "); // 尝试把输入字符串转成double,同时验证有效性 if (!double.TryParse(Console.ReadLine(), out double num1)) { Console.WriteLine("Invalid first number!"); return; } Console.WriteLine("Type second number: "); if (!double.TryParse(Console.ReadLine(), out double num2)) { Console.WriteLine("Invalid second number!"); return; } // 用else if替代多个独立if,提升执行效率 if (operation == "+") { Console.WriteLine($"Result: {num1 + num2}"); } else if (operation == "-") { Console.WriteLine($"Result: {num1 - num2}"); } else if (operation == "*") { Console.WriteLine($"Result: {num1 * num2}"); } else if (operation == "/") { // 额外处理除数为0的情况 if (num2 == 0) { Console.WriteLine("Cannot divide by zero!"); } else { Console.WriteLine($"Result: {num1 / num2}"); } } else { Console.WriteLine("Invalid operation!"); } } } }
关键说明:
- 类型转换:用
double.TryParse把用户输入的字符串转成double类型,同时通过返回值判断输入是否为有效数字。如果只需要处理整数,把double换成int即可,但会丢失小数精度。 - 输入验证:如果用户输入非数字(比如字母、符号),程序会提示错误并退出,避免崩溃。
- 运算符判断:用
else if代替多个if,一旦匹配到正确的运算符就不会继续判断后面的条件,更高效。 - 除数检查:除法时额外判断除数是否为0,避免运行时错误。
内容的提问来源于stack exchange,提问作者Dogo777
相关产品推荐
相关产品推荐

