在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)"的形式参数"

我找了找,但还是不明白缺了什么。我创建了一个要使用的实例,但它不起作用。有人能给我答案吗?

在C#中使用方法将华氏温度转换为摄氏度

您的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返回一个值?这就是返回值的作用。publiccalculate之间的那个小字定义了方法的返回类型。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"); 
    }
}