Ваша программа имеет несколько недостатков;Прежде всего вам нужно сохранить тип конверсии, который пользователь хочет выполнить, чтобы вы могли фактически выполнить его, когда он / она введет температуру, которую необходимо конвертировать.Поскольку вы работаете только с двумя типами температуры (по Фаренгейту и по Цельсию (да, ну, в любом случае, кто использует Réaumur?)), Вы можете сохранить выбор пользователя как логическое значение, которое указывает, был ли выбран градус Фаренгейта.Вы также можете принять десятичные числа.
Итак, сказав это, вот как вы можете изменить свою программу, чтобы отразить мои предложения:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
bool isFahrenheit;
bool temperatureTypeHasBeenDetermined = false;
while(!temperatureTypeHasBeenDetermined){
Console.WriteLine("What sort of temperature would you like to convert?");
string tempType = Console.ReadLine();
temperatureTypeHasBeenDetermined = ConvertChoice(tempType.ToLower(), out isFahrenheit);
}
decimal temperature;
bool temperatureEnteredCorrectly = false;
while(!temperatureEnteredCorrectly){
Console.WriteLine("Please enter a temperature to convert: ");
string temperatureString = Console.ReadLine();
temperatureEnteredCorrectly = decimal.TryParse(temperatureString, out temperature);
}
//Now we are ready to do the conversion
decimal convertedTemperature = isFahrenheit ?
ConvertFromFahrenheitToCelsius(temperature) :
ConvertFromCelsiusToFahrenheit(temperature);
string from = isFahrenheit ? "F" : "C";
string to = isFahrenheit ? "C" : "F";
Console.WriteLine("{0}{1} = {2}{3}", temperature, from, convertedTemperature, to);
Console.ReadLine();
}
static decimal ConvertFromFahrenheitToCelsius(decimal temperature)
{
//Implement properly
return 60m;
}
static decimal ConvertFromCelsiusToFahrenheit(decimal temperature)
{
//Implement properly
return 42m;
}
static bool ConvertChoice(string tempType, out bool isFahrenheit)
{
isFahrenheit = false;
switch (tempType)
{
case "fahrenheit":
Console.WriteLine("Fahrenheit it is!");
isFahrenheit = true;
return true;
case "celsius":
Console.WriteLine("Celsius it is!");
return false;
default:
Console.WriteLine("Invalid type, please type fahrenheit or celsius.");
return false;
}
}
}
}
Обратите внимание, что я убедился, что правильнозначения вводятся как для типа температуры, так и для значения температуры путем циклического изменения до получения действительного значения.
Я надеюсь, что это направит вас в правильном направлении для дальнейшего самообучения.Пожалуйста, не стесняйтесь спрашивать, если у вас есть какие-либо вопросы относительно вышеуказанного.В качестве отказа от ответственности я должен сказать, что я не скомпилировал приведенный выше код, но мой инструмент проверки синтаксиса обычно довольно надежен; -)