C#矩形面积周长计算程序:方法调用与变量问题求助
矩形面积与周长计算C#程序的问题修复
原代码的核心问题:
- 变量作用域错误:
Height()和Width()方法里定义的height、width是局部变量,只能在各自方法内部使用,Main()方法根本访问不到这些变量,导致调用计算方法时要么提示变量不存在,要么提示未赋值。 - 未接收方法返回值:
RectanglArea和Rectangleperimeter方法已经返回了计算结果,但Main()里没有把结果存到变量中,后续调用RectResults时自然没有可用的perimeter和area。 - 输入转换不合理:用
Convert.ToInt32把用户输入转成double,会丢失小数精度,应该用Convert.ToDouble。
修改后的完整代码:
using System; namespace Starter_Projects { internal class Program { static void Main(string[] args) { // 获取用户输入的宽高 double width = GetWidth(); double height = GetHeight(); // 计算面积和周长 double area = CalculateRectangleArea(width, height); double perimeter = CalculateRectanglePerimeter(width, height); // 输出结果 ShowResults(perimeter, area); } // 获取高度输入,返回double类型值 private static double GetHeight() { Console.WriteLine("请输入矩形的高度:"); return Convert.ToDouble(Console.ReadLine()); } // 获取宽度输入,返回double类型值 public static double GetWidth() { Console.WriteLine("请输入矩形的宽度:"); return Convert.ToDouble(Console.ReadLine()); } // 计算矩形面积 public static double CalculateRectangleArea(double width, double height) { return width * height; } // 计算矩形周长 public static double CalculateRectanglePerimeter(double width, double height) { return 2 * (width + height); } // 输出结果 public static void ShowResults(double perimeter, double area) { Console.WriteLine($"矩形的周长是:{perimeter}\n"); Console.WriteLine($"矩形的面积是:{area}\n"); Console.Read(); } } }
关键修改说明:
- 调整方法返回类型:把
Height()和Width()改成返回double的方法,直接返回用户输入的值,让Main()能获取到宽高数据。 - 接收返回值并存储:在
Main()里声明width、height、area、perimeter变量,分别接收输入方法和计算方法的返回值,确保后续调用输出方法时有可用的变量。 - 规范方法命名:修改了方法名(比如
RectanglArea改为CalculateRectangleArea),让代码可读性更强,符合C#命名规范。 - 优化输入转换:用
Convert.ToDouble替代Convert.ToInt32,保留输入的小数精度,避免计算误差。 - 简化代码:计算方法里直接返回结果,不需要额外声明局部变量,让代码更简洁。
内容的提问来源于stack exchange,提问作者josh gernold
相关产品推荐
相关产品推荐

