用方法将Fahrenheit转换为C#中的Celcius

时间:2015-11-16 11:41:11

标签: c# methods

你好我是新手,我现在是计算机科学的第一年。我们已经进行了一项练习,我们必须通过方法将华氏转换为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)'

我搜索了它,但我仍然不明白缺少什么。我创建了一个要使用的实例,但它不起作用。谁能给我回答?

5 个答案:

答案 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的价值?这是返回值的用途。 publiccalculate之间的这个小词定义了方法的返回类型。 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"); 
    }
}