在C#中使用方法将华氏温度转换为摄氏度
本文关键字:温度 转换 摄氏度 使用方法 | 更新日期: 2023-09-27 18:22:08
大家好,我是一名新手,目前是计算机科学专业的一年级学生。我们得到了一个练习,在这个练习中,我们必须用各种方法将华氏温度转换为摄氏度(教授建议不要静态)。我们从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.cacalculate中,它显示了错误的计算
CS7036 C#没有给出与所需参数相对应的参数"Formula.calculate(double,double)"的形式参数"
我找了找,但还是不明白缺了什么。我创建了一个要使用的实例,但它不起作用。有人能给我答案吗?
您的calculate
方法需要2
参数,但您尝试在没有参数的情况下调用它。在我看来,它根本不应该有两个参数。只要一个fahrenheit参数就足够了,这样它就可以计算摄氏度值。
此外,5 / 9
执行整数除法——它总是丢弃小数部分——所以它总是返回0
。
静态方法应该足以满足您的情况;
static double Celsius(double f)
{
return 5.0/9.0 * (f - 32);
}
您的代码中有一些错误。首先,您的函数只需要一个输入参数,即华氏温度。在你解决了这个问题之后,你会发现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");
}
}
}
您的代码有一些漏洞,我建议重写如下:
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,而不适用于其他情况。
除非您了解参数和返回值是什么以及如何使用它们,否则正确的答案对您没有多大用处。
在你定义的计算方法
public void calculate(double F, double C)
该方法需要两个输入参数F和C。这意味着当您从主方法调用该方法时,需要在括号之间传递两个值:
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;
由于已经分配了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");
}
}