堆棧溢出社區。控制檯應用程序崩潰/未響應
我正在寫一個程序,將華氏溫度轉化爲攝氏溫度和攝氏華氏溫度。該程序有一個簡單的菜單,並獲取用戶輸入來選擇一個選項。如果用戶輸入無效選項,我實現了一個小小的do-while循環。如果用戶選擇1,2或3(這是三個有效的選項),程序將運行if語句,在其中執行塊代碼並打破循環。但是,如果用戶輸入了其他內容(一個無效的選項),程序將在else中執行塊代碼,然後它將返回到循環的開始處(選擇一個選項),從而凍結或崩潰。
下面是代碼:
// 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 2013-02-18 16:12:10
當我在Visual C#express中運行程序時,它會凍結並將我拋回到我認爲是調試器的地方。另一方面,當我在Windows cmd中編譯程序時,程序將崩潰並拋出「未處理的異常」 – Jameslat 2013-02-18 16:20:07
對於我來說,除了拋出的'FormatException'之外,程序對我來說很好。看第二個答案。 – jAC 2013-02-18 16:20:38