【问题标题】:Temperature Prompt User for Console Application?控制台应用程序的温度提示用户?
【发布时间】:2020-10-29 05:14:32
【问题描述】:

(C# Visual Studio 2019) 你好,我的教授要我们做如下图所示的代码: https://i.stack.imgur.com/ONNSV.png

我们对这门课程还很陌生,只讨论了几种转换方法。

这是我的尝试,但出现了一个我似乎无法理解的错误。如果有人可以帮助我或提供解决方案,谢谢!

        Console.Write("Enter degrees Fahrenheit to convert to Celsius OR \nenter degrees Celsius 
        to convert to Fahrenheit.");
        Console.Write("\n\nCurrent temperature scale (C for Celsius; F for Fahrenheit): ");
        double tempscale = Convert.ToDouble(Console.ReadLine());
        Console.Write("Current degrees: ");
        double currentdeg = Convert.ToDouble(Console.ReadLine());
        double degreeCelsius = 5 / 9 * (tempscale - 32);
        double degreeFahrenheit = 9 / 5 * (degreeCelsius + 32);
    
        if (tempscale == degreeFahrenheit)
            Console.Write(degreeFahrenheit + "degrees Fahrenheit is" + degreeCelsius + "degrees Celsius");
        if (tempscale == degreeCelsius)
            Console.Write(degreeCelsius + "degrees Celsius is" + degreeFahrenheit + "degrees Fahrenheit");
        Console.Write("\n\nPress any key to continue...");
        Console.ReadKey();

【问题讨论】:

  • 第一件事是你不允许输入C或F,这是第一个条件。您正在阅读用户输入,然后尝试将 C/F 转换为双精度。听起来不正确:)
  • 如何将双精度改成字母?

标签: c# temperature


【解决方案1】:

如果你在代码中写了5 / 9,你就是在做整数除法,这和你期望的有点不同:

int x = 5;  
int y = 9;

int result = x / y; // result is 0

如果您将 2 个整数相除,则结果为整数,对于导致分数的整数除法,结果将向零舍入(舍弃小数点后的所有内容)

尝试将浮点文字编写为 5f 用于浮点数或 5d 用于双精度...

5d / 9d 应该做你所期望的

【讨论】:

    【解决方案2】:

    您的第一个目标是从用户那里获得 C/F。让我们为它做一个简单的方法。它将根据用户输入返回 C 或 F。 或者你可以使用枚举。

    enum TemperatureScales { Celsius, Fahrenheit }
    

    这里是获取温标的方法示例。

    private static char GetTemperatureScale()
    {
        // Will wait for correct input from user
        while (true)
        {
            Console.WriteLine("Enter C or F");
            var input = Console.ReadLine();
            if (input == "C" || input == "F")  // you could improve and check for 'c' and 'f'
            {
                return input[0]; // you could use enum here if you are familiar with it
            }
        }
    }
    

    在您的代码中使用它以确保输入有效。

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 1970-01-01
      • 2016-06-30
      • 2011-11-12
      • 2017-02-27
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多