未输入任何值时程序崩溃
本文关键字:程序 崩溃 任何值 输入 未输 | 更新日期: 2023-09-27 18:23:53
我创建了一个程序,遇到了一个问题。 当我调试程序并且不输入值(例如数字(并按几次 Enter 按钮时,程序最终崩溃。我想知道是否有可以实施的验证规则,以便在未输入任何值时程序不会崩溃。
int userChoice;
static void Main(string[] args)
{
new Program().Welcome();
}
public void Welcome()
{
Console.WriteLine(" HELLO");
Console.ReadLine();
Main_Menu();
}
private void Main_Menu()
{
Console.WriteLine("1). Welcome");
Console.WriteLine("2). Help Facilities");
Console.WriteLine("3). Exit");
userChoice = Convert.ToInt16(Console.ReadLine());
Options();
}
private void Options()
{
if (userChoice == 1)
{
Console.Clear();
Console.WriteLine("Welcome.....................");
Console.ReadLine();
}
if (userChoice == 2)
{
Console.Clear();
Console.WriteLine("Help.........................");
Console.ReadLine();
}
if (userChoice == 3)
{
//if user selects option 3 the program will exit
}
不要只是解析,使用 try parse 来验证它是否是一个数字。
以下是整数类型(整数(的一些简写
- 长 = Int64
- int = int32
- 短 = Int16
- 字节 = (如果存在的话,Int8 是什么(
因此,只需使用速记,它们更具可读性,因为它们更明显。
int t;
if(int.TryParse(Console.ReadKey(),out t){
//Do work with the number t
}
else{
//Handle a non numerical input
}
使用此Main_Menu()
方法代替您的方法。您将获得流畅的输出。
private void Main_Menu()
{
Console.WriteLine("1). Welcome");
Console.WriteLine("2). Help Facilities");
Console.WriteLine("3). Exit");
string userChoiceSTR = Console.ReadLine();
if (!string.IsNullOrEmpty(userChoiceSTR))
{
userChoice = Convert.ToInt16(userChoiceSTR);
try
{
Options();
}
catch
{
Console.WriteLine("Did not put any value. Please Select a menu: ");
Main_Menu();
}
}
else {
Console.WriteLine("Did not put any value. Please Select a menu: ");
Main_Menu();
}
}
如果你把一个空字符串放进Convert.ToInt16
它会抛出一个FormatException
。因此,最好尝试将输入解析为整数,并在出现问题时让用户重新输入。
short s;
while (!short.TryParse(Console.ReadLine(), out s))
{
Console.WriteLine("Input invalid. Retry.");
}
(自从您在示例代码中使用short
以来,我一直使用过。就个人而言,我通常会选择int
(