最佳重载方法匹配...有一些无效的参数 C#
本文关键字:无效 参数 重载 方法 最佳 | 更新日期: 2023-09-27 18:09:24
public static void masodmegold(double a,double b,double c)
{
double x0, x1, x2;
double gyokalatt = b * b - 4 * a * c;
if (gyokalatt > 0)
{
x1 = ( -b + Math.Sqrt(gyokalatt)) / (2 * a);
x2 = ( -b - Math.Sqrt(gyokalatt)) / (2 * a);
Console.WriteLine("két gyök: ", x1, x2);
}
else if (gyokalatt == 0)
{
x0 = ( -b / (2 * a));
Console.WriteLine("egy gyök: ", x0);
}
else
{
Console.WriteLine("blabla!");
}
}
static void Main(string[] args)
{
Console.WriteLine(masodmegold(1,-4,3));
Console.ReadKey();
}
并且有两个错误
错误 1
最佳重载方法匹配 'System.Console.WriteLine(字符串, 参数对象[](' 有一些无效的参数
错误 2
参数 1:无法从"void"转换为"字符串">
你的masodmegold
方法返回void,请参阅public static void masodmegold
要么需要将返回类型void更改为某些内容
public static string masodmegold(double a,double b,double c)
{
//Your code here
//change Console.WriteLine("két gyök: ", x1, x2); to Cnsole.WriteLine("két gyök: "+ x1+""+ x2);
return "Some string you want to print"
}
或者主要你可以像直接调用它一样,而无需更改其返回类型,
masodmegold(1,-4,3)
Console.writeline()
需要一个参数,则传递返回类型为 void 的masodmegold(1,-4,3)
,这等效于 Console.writeline(void)
。所以你得到错误。
以下是导致编译错误的行:
Console.WriteLine(masodmegold(1,-4,3));
它应该只是
masodmegold(1,-4,3);
您的 masodmegold
方法具有类型 void
,因此它不会返回任何 - 因此在此方法执行后,您没有任何东西要传递给ConsoleWriteLine
。
您应该只调用方法本身,而不将其作为参数传递给Console.WriteLine
错误 1你构建字符串的方式是错误的,请尝试这样的事情:
Console.WriteLine("két gyök: " + x1 + " " + x2);
您也可以查看字符串。格式方法。
错误 2主要方法:
static void Main(string[] args)
{
masodmegold(1,-4,3);
Console.ReadKey();
}
Console.WriteLine("egy gyök: ", x0);
我们可以这样做:
Console.WriteLine("egy gyök: {0}", x0);
这一行:
Console.WriteLine(masodmegold(1,-4,3));
我们应该知道该方法masodmegold
什么都不返回,因为程序不知道哪个与名为WriteLine
的方法匹配。
您的masodmegold
具有 void 类型,它不返回任何内容。所以试试这个:
static void Main(string[] args)
{
masodmegold(1, -4, 3);
Console.ReadKey();
}
同样在这一行中:
else if (gyokalatt == 0)
{
x0 = ( -b / (2 * a));
Console.WriteLine("egy gyök: ", x0);
}
浮点与等式运算符的比较可能会在舍入值时损失精度,最好这样使用:
else if (Math.Abs(gyokalatt) < 0.001)
{
....
}