Allyson Bryant Ответов: 2

Пользователь подсказки температуры для консольного приложения?


(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();

2 Ответов

Рейтинг:
8

TheRealSteveJudge

Как предположил Билл, отладка-это то, чему должен научиться каждый разработчик, чтобы знать, что происходит внутри, когда программа ведет себя не так, как ожидалось.
Пожалуйста, позвольте мне дать вам еще несколько предложений.

Первая проблема заключается в следующем

Console.Write("Enter degrees Fahrenheit to convert to Celsius OR

                \nenter degrees Celsius to convert to Fahrenheit.");

будет саботировать успешную компиляцию.
Вы должны заменить его на
Console.Write("Enter degrees Fahrenheit to convert to Celsius OR\nenter degrees Celsius to convert to Fahrenheit.");

Следующая проблема заключается в следующем
double tempscale = Convert.ToDouble(Console.ReadLine());

Вы ожидаете от пользователя ввести либо 'C' или 'Ф'.
Независимо от того, что введет пользователь, вы преобразуете его в double, который не является подходящим типом данных для символов.
Вы должны заменить его на
var tempscale = Console.ReadLine();

Линии, которым нужно следовать, тогда не имеют смысла.
Подсказка:
Вы можете начать с этого для преобразования из градуса Цельсия в градус Фаренгейта
if (tempscale == "C")
{
    double degreeFahrenheit = 9 / 5 * (currentdeg + 32);
    Console.Write(currentdeg + "degrees Celsius is " + degreeFahrenheit + " degrees Fahrenheit");

Затем вы должны сделать нечто подобное для противоположного направления.
Кстати: ваша формула для преобразования Фаренгейта в Цельсий неверна!
Кроме того, вы должны позаботиться об обработке ошибок, чтобы поймать недопустимые входные данные, например, пользователь вводит другие буквы, чем " C " или "F" в первой консоли.Читай дальше.
Что произойдет, если пользователь введет во вторую консоль любые другие номера, кроме допустимых?С readline?


Рейтинг:
17

BillWoodruff

Цитата:
с ошибкой, которую я, кажется, не могу осознать
Поставьте точку останова в начале вашего кода и выполните один шаг через нее (F11): наблюдайте за значениями переменных, чтобы найти неожиданные результаты.

Опишите ошибку, и где она происходит.

Эти простые методы являются основой отладки, и они так же важны для компетентности программиста, как и владение компьютерным языком, который вы используете.

CodeProject есть много статей по отладке: [^] ... для начала: я рекомендую [^] и [^]


TheRealSteveJudge

Отладка и более подробное описание симптомов - это всегда хорошая идея! 5*