You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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();
        }
    }
}

关键修改说明:

  1. 调整方法返回类型:把Height()和Width()改成返回double的方法,直接返回用户输入的值,让Main()能获取到宽高数据。
  2. 接收返回值并存储:在Main()里声明width、height、area、perimeter变量,分别接收输入方法和计算方法的返回值,确保后续调用输出方法时有可用的变量。
  3. 规范方法命名:修改了方法名(比如RectanglArea改为CalculateRectangleArea),让代码可读性更强,符合C#命名规范。
  4. 优化输入转换:用Convert.ToDouble替代Convert.ToInt32,保留输入的小数精度,避免计算误差。
  5. 简化代码:计算方法里直接返回结果,不需要额外声明局部变量,让代码更简洁。

内容的提问来源于stack exchange,提问作者josh gernold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:05:17