首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不同地理图形区域的重载方法

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

Stack Overflow用户
提问于 2019-06-04 02:24:30
回答 1查看 72关注 0票数 -4

我需要重载一个方法,以便它能够计算圆形、正方形、矩形、三角形和梯形的面积。我想我已经把它们都弄清楚了,但是圆圈似乎是个问题。

代码语言:javascript
复制
    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();
EN

回答 1

Stack Overflow用户

发布于 2019-06-04 04:25:47

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

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

你有没有试过在Main方法中把int改成双精度的y?

代码语言:javascript
复制
static void Main(string[] args)
{
    int x = 2;
    double y = 3.14;
    Console.WriteLine(Pole(x, y));
    Console.ReadKey();
}

另外,为什么不直接传入一个参数,并将其乘以3.14,用于计算圆的Pole重载方法呢?

代码语言:javascript
复制
/// <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个方法中的每一个都为不同的形状进行计算。

向每个方法添加摘要或简单的注释将有助于您和任何其他尝试阅读您的代码的人继续前进。

重要提示:因为这些都是重载,所以为了"Circle“Pole方法,您需要将所有方法更改为返回double而不是int。将它作为唯一的void方法可能是导致您开始出错的原因。

这应该足以让你开始:

代码语言:javascript
复制
//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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56432670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档