堆栈溢出社区。控制台应用程序崩溃/未响应
我正在写一个程序,将华氏温度转化为摄氏温度和摄氏华氏温度。该程序有一个简单的菜单,并获取用户输入来选择一个选项。如果用户输入无效选项,我实现了一个小小的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