编写GetAverage方法读取3个数求平均值,遇ReadLine调用报错求助
问题排查与解决
错误原因
Console.ReadLine()方法没有支持传入字符串参数的重载版本,你在调用时传递的提示文本会直接触发编译错误。正确的操作逻辑是先输出提示信息,再调用无参的Console.ReadLine()读取用户输入。
修正后的代码
class Program { static void Main(string[] args) { double average = GetAverage(); Console.WriteLine("The average of the numbers is: " + average); } public static double GetAverage() { Console.WriteLine("Enter the first number: "); double num1 = double.Parse(Console.ReadLine()); Console.WriteLine("Enter the second number: "); double num2 = double.Parse(Console.ReadLine()); Console.WriteLine("Enter the third number: "); double num3 = double.Parse(Console.ReadLine()); return (num1 + num2 + num3) / 3; } }
额外优化建议
如果用户输入非数字内容,double.Parse()会抛出异常导致程序崩溃。可以改用double.TryParse()做输入校验,提升程序健壮性:
public static double GetAverage() { double num1, num2, num3; // 校验第一个数字输入 while (true) { Console.WriteLine("Enter the first number: "); if (double.TryParse(Console.ReadLine(), out num1)) break; Console.WriteLine("Invalid input, please enter a valid number."); } // 校验第二个数字输入 while (true) { Console.WriteLine("Enter the second number: "); if (double.TryParse(Console.ReadLine(), out num2)) break; Console.WriteLine("Invalid input, please enter a valid number."); } // 校验第三个数字输入 while (true) { Console.WriteLine("Enter the third number: "); if (double.TryParse(Console.ReadLine(), out num3)) break; Console.WriteLine("Invalid input, please enter a valid number."); } return (num1 + num2 + num3) / 3; }
内容的提问来源于stack exchange,提问作者Melanie
相关产品推荐
相关产品推荐

