你好我是新手,我现在是计算机科学的第一年。我们已经进行了一项练习,我们必须通过方法将华氏转换为Celcius(教授建议不要静止)。我们从C#开始。这是我的代码。
namespace Week3_Exe3._1{
public class Formula
{
public double F;
public double C;
public void calculate(double F, double C)
{
C = (5 / 9) * (F - 32);
}
public static void Main(string[] args)
{
Console.WriteLine("Please enter the Fahrenheit you wish to convert");
F = double.Parse(Console.ReadLine());
Formula form = new Formula();
Console.WriteLine(F + "Fahrenheit correspond to " + form.calculate() + "Degrees celcius");
}
}
}
我目前正在使用Visual Studio Community 2015和form.calculate,它会将计算结果显示错误
CS7036 C#没有给出符合要求的参数 形式参数'''Formula.calculate(double,double)'
我搜索了它,但我仍然不明白缺少什么。我创建了一个要使用的实例,但它不起作用。谁能给我回答?
答案 0 :(得分:4)
您的calculate
方法期望2
参数,但您尝试在没有参数的情况下调用它。根据我的拙见,它不应该采用两个参数。只需一个华氏度参数即可计算出摄氏值。
另外5 / 9
执行integer division -it 总是丢弃小数部分 - 因此它将始终返回0
。
静态方法应该适合您的情况;
static double Celsius(double f)
{
return 5.0/9.0 * (f - 32);
}
答案 1 :(得分:1)
您的代码中存在一些错误。首先,您的功能只需要一个输入参数,即华氏温度。解决了这个问题后,你会发现温度为100华氏度将返回0摄氏度的温度,这显然是不正确的。您需要修改方程式以使用至少一个小数部分,否则C#将隐式地将值转换为整数。
using System;
namespace Week3_Exe3._1
{
public class Formula
{
public double calculate(double F)
{
return (5.0 / 9.0) * (F - 32.0);
}
public static void Main(string[] args)
{
Console.WriteLine("Please enter the Fahrenheit you wish to convert");
var F = double.Parse(Console.ReadLine());
Formula form = new Formula();
Console.WriteLine(F + " Fahrenheit correspond to " + form.calculate(F) + " Degrees celcius");
}
}
}
答案 2 :(得分:1)
您的代码有一些漏洞,我建议的重写是:
public class Formula
{
public double F;
public double C;
public void calculate()
{
C = (5.0 / 9.0) * (F - 32);
}
public static void Main(string[] args)
{
Console.WriteLine("Please enter the Fahrenheit you wish to convert");
Formula form = new Formula();
form.F = double.Parse(Console.ReadLine());
form.calculate();
Console.WriteLine(F + "Fahrenheit correspond to " + form.C + "Degrees celcius");
}
}
请注意,此代码仅适用于F => C,而不是相反。
答案 3 :(得分:1)
除非您了解哪些参数和返回值以及如何使用它们,否则正确答案对您没有多大用处。
在计算方法的定义中
public void calculate(double F, double C)
该方法需要两个输入参数F和C.这意味着当您从main方法调用方法时,需要在括号之间传递两个值:
form.calculate(F, C)
正如其他人所指出的,对于Farenheight,你真的只需要一个参数。这将我们带到下一位 - 你如何获得C的价值?这是返回值的用途。 public
和calculate
之间的这个小词定义了方法的返回类型。 void
表示不返回任何内容。在您的情况下,您将要返回double
。因此将方法定义放在一起应如下所示
public double calculate(double F)
最后,您必须实际返回方法末尾的值:
double C = (5.0 / 9.0) * (F - 32);
return C;
答案 4 :(得分:0)
由于您已经指定了C
的值,因此可以从函数保护代码中删除C
参数。比你的功能必须像。
public void calculate(double F)
{
C = (5.0 / 9.0) * (F - 32.0);
}
比你的代码
public class Formula
{
// public double F; remove because F is used as parameter
public double C;
public void calculate(double F)
{
C = (5.0 / 9.0) * (F - 32.0);
}
public static void Main(string[] args)
{
Console.WriteLine("Please enter the Fahrenheit you wish to convert");
var F = double.Parse(Console.ReadLine()); // Creating new variable
Formula form = new Formula();
form.calculate(F); // Pass parameter to our function
Console.WriteLine(F + "Fahrenheit correspond to " + form.C /* retrive the results of calculation */ + "Degrees celcius");
}
}