不同几何图形区域的重载方法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

我需要重载一个方法,以便能够计算圆形,正方形,矩形,三角形和梯形的面积。我想我已经弄明白了,但这个圈子似乎是一个问题。

    static void Pole(int x, double y = 3.14)
    {
        Console.WriteLine(x * x * y);
    }
    static int Pole(int x)
    {
        return x * x;
    }
    static int Pole(int x, int y)
    {
        return x * y;
    }
    static int Pole(int x, int y, int z = 2)
    {
        return x * y / z;
    }
    static int Pole(int x, int y, int v, int z = 2)
    {
        return (x + y) / z * v;
    }
    static void Main(string[] args)
    {
        int x = 2;
        int y = 3.14;
        Console.WriteLine(Pole(x, y));
        Console.ReadKey();
提问于
用户回答回答于

你的metod应该是这样的

Console.WriteLine((double)x * (double)x * y);

因为你需要将int转换为double。

用户回答回答于

我不知道你遇到了什么问题,但我可能猜到它是以下之一:

1)你得到一个错误,因为你的一个重载方法返回void而其他的返回int(它们都必须是相同的)或2)你的Main方法调用的是这个方法static int Pole(int x, int y)而不是static void Pole(int x, double y = 3.14),我是m假设是“圆圈”; 因为你传递了两个int而不是一个int和一个double。

您是否尝试在Main方法中将int更改为y加倍?

static void Main(string[] args)
{
    int x = 2;
    double y = 3.14;
    Console.WriteLine(Pole(x, y));
    Console.ReadKey();
}

另外,为什么不传递一个参数并将它乘以3.14,以便计算圆的Pole重载方法?

/// <summary>
/// Method to calculate a circle
/// </summary>
/// <param name="x"></param>      
/// <returns></returns>
static double Pole(int x)
{
     return 3.14(x * x);
}

static void Main(string[] args)
{
    int x = 2;
    Console.WriteLine(Pole(x));
    Console.ReadKey();
}

另一个提示:在代码中添加一些注释。你有5个名为Pole的方法,一个接受比最后一个更多的int参数,并且5个方法中的每一个都计算不同的形状。

为每个方法添加摘要或只是一个简单的注释将帮助您和其他任何人尝试阅读您的代码,继续前进。

重要提示:因为这些是重载,所以你需要将所有方法更改为double而不是int,只是为了“Circle”Pole方法。将它作为唯一的void方法可能会导致错误开始。

这应该足以让你入门:

//Circle
static double Pole(int x, double y)
{
    if(y != 3.14)
        y = 3.14;

    return y(x * x);
}

//Square
static double Pole(int x)
{
    return x * x;
}

//Rectangle
static double Pole(int x, int y)
{
    return x * y;
}

//Triangle
static double Pole(int x, int y, int z)
{
    if(z != 2)
        z = 2;

    return x * y / z;
}

//Trapezoid
static double Pole(int x, int y, int v, int z)
{
    if(z != 2)
        z = 2;

    return (x + y) / z * v;
}

static void Main(string[] args)
{
    int x = 2;
    double y = 3.14;
    Console.WriteLine(Pole(x, y));
    Console.ReadKey();
}

扫码关注云+社区

领取腾讯云代金券