【发布时间】:2021-02-13 22:21:32
【问题描述】:
我是一名初学者 C# 程序员,试图编写一个向用户显示菜单的简单应用程序。当用户在运行时选择选项 1 时,程序会列出从 0 到 100 摄氏度转换为华氏度的值。选择选项 2 时,程序会计算并显示一个以华氏度为单位的 0 到 212 度之间的值列表,转换为摄氏度。在相关方法中为值 100 和 212 使用常量。
问题是我只输入了选项而不是转换后的结果。这是我到目前为止所做的: {
class TemperatureConverter
{
private const int columns = 1;
/// <summary>
///
///
///
/// </summary>
public TemperatureConverter()
{
Start();
}
/// <summary>
///
/// </summary>
public void Start()
{
while (true)
{
int choice = ShowMenu();
switch (choice)
{
case 0:
return;
case 1:
Console.WriteLine();
while (true)
{
Console.Write("Enter Celsius:");
Console.WriteLine();
if (double.TryParse(Console.ReadLine(), out double celsius))
{
Console.WriteLine(ShowTableCelsiusToFahrenheit(celsius));
Console.WriteLine();
break;
}
}
break;
case 2:
Console.WriteLine();
while (true)
{
Console.Write("Enter Fahrenheit:");
if (double.TryParse(Console.ReadLine(), out double fahrenheit))
{
Console.WriteLine(ShowTableFahrenheitToCelsius(fahrenheit));
Console.WriteLine();
break;
}
}
break;
default:
Console.WriteLine("You must enter 1 to convert to Celsius or 2 to convert to Fahrenheit or 0 to exit!");
break;
}
}
}
private double CelsiusToFarenheit(double celsius) => celsius * 9.0 / 5.0 + 32.0;
private double FahrenheitToCelsius(double fahrenheit) => (fahrenheit - 32.0) * 5.0 / 9.0;
private string ShowTableCelsiusToFahrenheit(double celsius) => $"{celsius}°C is {CelsiusToFarenheit(celsius)}°F";
private string ShowTableFahrenheitToCelsius(double fahrenheit) => $"{fahrenheit}°F is {FahrenheitToCelsius(fahrenheit)}°C";
public int ShowMenu()
{
int width = 28;
while (true)
{
Console.WriteLine("MAIN MENU");
Console.WriteLine("".PadLeft(width, '-'));
Console.WriteLine("Celsius to Fahrenheit".PadRight(width - 3) + ": 1");
Console.WriteLine("Fahrenheit to Celsius".PadRight(width - 3) + ": 2 ");
Console.WriteLine("Exit the program".PadRight(width - 3) + ": 0 ");
Console.WriteLine("".PadLeft(width, '-'));
Console.WriteLine();
Console.WriteLine("Your choice: ");
string line = Console.ReadLine();
if (int.TryParse(line, out int choice))
{
return choice;
}
}
}
}
}
【问题讨论】:
-
你如何建议它应该跳出循环
while (choice != 0) ShowMenu();你在这里没有写任何逻辑。您是否缺少循环代码上的大括号?我注意到您可以将ShowTable...函数合并为一个,因为它们做同样的事情
标签: c# visual-studio console-application