我需要重载一个方法,以便它能够计算圆形、正方形、矩形、三角形和梯形的面积。我想我已经把它们都弄清楚了,但是圆圈似乎是个问题。
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();
发布于 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?
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个方法中的每一个都为不同的形状进行计算。
向每个方法添加摘要或简单的注释将有助于您和任何其他尝试阅读您的代码的人继续前进。
重要提示:因为这些都是重载,所以为了"Circle“Pole方法,您需要将所有方法更改为返回double而不是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();
}
https://stackoverflow.com/questions/56432670
复制相似问题