【问题标题】:Temperature converter温度转换器
【发布时间】:2020-02-18 19:31:45
【问题描述】:

我正在尝试解决一个问题。 我的老师希望我们做一个带有温度转换器的 C# 控制台,从摄氏到华氏并进行切换。问题是我在编码中不断出现错误,我不知道我从哪里开始出错以至于完全迷失了方向。顺便提一下,我还处于起步阶段,希望能得到一些帮助。

我们应该编写一个程序,显示以摄氏度为单位的温度列表,转换为华氏温度,反之亦然。提供了一个菜单供用户选择转换类型:该菜单应不断重复,直到用户选择 0 退出。

选择选项1时,程序计算并显示在选择选项2的下一个图像中转换为摄氏度的华氏度的0到212度的值之间的值列表,程序列出了0到100摄氏度的值转换为华氏度。

这是我的开始:

using System;

namespace TempconverterA2
{
    class TemperatureConverter
    {
        public void Start()
        {

            Console.WriteLine("**************************************");
            Console.WriteLine("\t      MAIN MENU");
            Console.WriteLine("**************************************");
            Console.WriteLine(" Convert Fahrenheit to Celsius : 1");
            Console.WriteLine(" Convert Celsius to Farenheit : 2");
            Console.WriteLine(" Exit the Converter : 0");
            Console.WriteLine("**************************************");

            Console.WriteLine("\nYour choice: ");
            switch (choice)
            {
                case 1:
                    CalculateFarenheitToCelsius(F = 9 / 5 * C + 32);
                    break;
                case 2:
                    CalculateCelsiusToFarenhet(C = 5 / 9 * (F - 32));
                case 0: //do nothing (exists to loop)
                    break;

                default:
                    Console.WriteLine("Invalid option. Choose between 0 and 2.");
                    break;
            } while (choice != 0) ;
            public void CalculateCelsiusToFarenhet()
            {
                double convertedValue = 0;
                stringtextOut = string.Empty;

                for (int i= 0, i <= 100; i += 5)
                {
                    convertedValue = CalculateCelsiusToFarenhet(i);
                    textOut = string.Format("{0,16:f2} C = {1,6:f2} F", i, convertedValue);
                    Console.WriteLine(textOut);

                }
                Console.WriteLine();
    }
}//End of Start

【问题讨论】:

  • Dia Di,在“switch”中使用之前,您是否将任何内容分配给“choice”?它目前可能在某处被声明为 int 并且默认为 0,因此最终它只是对开关的“默认”进行操作.. 猜测而不查看完整的 cs 文件。
  • CalculateFarenheitToCelsius() 的定义是什么?此外,您将参数传递给CalculateCelsiusToFarenhet(),但该方法不接受参数。
  • 这里有几个明显的错误: 1. 你没有声明选择(编译错误)。 2.您没有为用户输入的选择分配值(运行时错误)。 3.CalculateFarenheitToCelsius 函数不存在(编译错误)。 4. while 语句后缺少右括号(编译错误)。 5. 即使函数不带参数(编译错误),您也使用参数调用CalculateCelsiusToFarenhet。 6. 您在CalculateCelsiusToFarenhet 中调用CalculateCelsiusToFarenhet,没有基本情况。这将导致无限递归(运行时堆栈溢出)
  • 我建议您在尝试 OOP 之前再次阅读初学者指南并从一个主要功能程序开始。
  • 我在这里同意@Steve。除了 OOP 实践之外,您还缺少功能性实践。观看一些关于函数式编程语言(如 C)的初学者视频。

标签: c# console-application converters temperature


【解决方案1】:

这不是你想的那样:

switch (choice)
{
    // case statements removed for brevity          
} while (choice != 0);

它实际上是这样做的:

switch (choice)
{

}

while (choice != 0)
{
    // infinite loop if choice != 0
}

这是因为switch 是一个控制块,而while 是一个单独的控制块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多