переполнение стека сообщество.Консольное приложение, разбивающее/не отвечающее
Я пишу программу, которая конвертирует температуру Фаренгейта в цельном Цельсе и по Цельсию в Фаренгейт. Программа имеет простое меню и вводит пользовательский ввод для выбора опции. Я реализовал небольшой цикл do-while, если пользователь вводит недопустимый параметр. Если пользователь выбирает 1, 2 или 3 (которые являются тремя действительными параметрами), программа запускает оператор if, выполняет в нем блок-код и прерывает цикл. Однако, если пользователь вводит что-либо еще (недопустимый вариант), программа будет выполнять блок-код в другом месте, а затем он вернется к началу цикла (выберите параметр), замораживая или сбой в процессе.
Вот код:
// James Archbold
// Convert.cs
// A program to convert fahrenheit to celsius or celsius to fahrenheit
//16 February 2013
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Convert_Temperature
{
class Convert
{
static void Main(string[] args)
{
float F, C;
string option;
do
{
Console.WriteLine("\nWelcome to 'Convert' program!");
Console.WriteLine("***********************Menu**********************************");
Console.WriteLine("1. Fahrenheit to Celsius");
Console.WriteLine("2. Celsius to Fahrenheit");
Console.WriteLine("3. Goodbye");
Console.Write("\nPlease enter an option: ");
option = Console.ReadLine();
switch (option)
{
case "1":
Console.Write("Please enter your Fahrenheit temperature: ");
F = int.Parse(Console.ReadLine());
C = (5f/9f) * (F - 32);
Console.WriteLine("The temperature is {0} degrees Celsius.", C);
Console.ReadKey();
break;
case "2":
Console.Write("Please enter your Celsius temperature: ");
C = int.Parse(Console.ReadLine());
F = 5f/9f * C - 32;
Console.WriteLine("The temperature is {0} degrees Fahrenheit.", F);
Console.ReadKey();
break;
case "3":
Console.WriteLine("Goodbye!");
Console.ReadKey();
break;
default:
Console.WriteLine("That is not a valid option!");
break;
}
Console.WriteLine("Please press Enter to continue...");
Console.ReadLine();
Console.WriteLine();
} while (option != "3");
}
}
}
Я не владеет в C#, но я бы ожидать, что ваша программа умереть с исключением брошенной 'int.Parse (Console.ReadLine())'. Так что же происходит? сбой или замораживание? Что произойдет, если вы выполните свою программу в отладчике? – Axel
Когда я запускаю программу в Visual C# express, она замерзает и возвращает меня к тому, что я предполагаю, отладчик. С другой стороны, когда я компилирую программу в windows cmd, программа сбой и бросает мне «необработанное исключение». – Jameslat
Программа отлично работает для меня, помимо брошенного «FormatException». Посмотрите на второй ответ. – jAC