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

时间:2019-06-03 18:24:30

标签: c#

我需要重载一种方法,以便它能够计算圆形,正方形,矩形,三角形和梯形的面积。我想我都知道了,但是圈子似乎是个问题。

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

2 个答案:

答案 0 :(得分:0)

我不知道您遇到什么问题,但我可能猜得出是以下情况之一:

1)您收到一个错误消息,因为您的重载方法之一返回void,而其他方法返回int(它们都必须相同) 要么 2)您的Main方法正在调用的是此方法static int Pole(int x, int y)而不是static void Pole(int x, double y = 3.14),我假设它是“圆”;因为您传递的是两个整数,而不是一个整数和一个双精度整数。

您是否尝试过在Main方法中将int的整数倍更改为y?

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

为什么不只输入一个参数,然后将其乘以3.14,用于计算圆的极点过载方法呢?

/// <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而不是仅仅为了“ Circle” Pole方法而返回int。将其作为唯一的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();
}

答案 1 :(得分:-1)

您的方法应该像这样

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

因为您需要将int转换为两倍。