我搜索了stackoverflow,但没有发现任何能回答我问题的内容.不幸的是,单词作为搜索查询并不是一个简单的问题.
我正在使用c#,我有一个菜单,要求用户从1 - 4中选择一个选项.我确认所选的值是一个整数,但每当我输入一个字母或符号时我的代码就会中断.如何为此添加验证?我的代码目前如下.
static void Main(string[] args)
{
DirectoryInfo folderInfo = new DirectoryInfo("C:\\Windows");
FileInfo[] files = folderInfo.GetFiles();
int mainMenuChoice=0;
while ( mainMenuChoice != 1 || mainMenuChoice!= 2 || mainMenuChoice!= 3 || mainMenuChoice!= 4)
{
Console.WriteLine("What would you like to do?");
Console.WriteLine("1. Full File Listing.");
Console.WriteLine("2. Filtered File Listing.");
Console.WriteLine("3. FolderStatistics.");
Console.WriteLine("4. Quit.");
mainMenuChoice = int.Parse(Console.ReadLine());
if (mainMenuChoice == 1)
{
Option1();
}
if (mainMenuChoice == 2)
{
Option2();
}
if (mainMenuChoice == 3)
{
Option3();
}
if (mainMenuChoice == 4)
{
}
else
{
Console.WriteLine("you didnt enter a valid input! try again.");
}
}
Run Code Online (Sandbox Code Playgroud)
将读数从命令行更改为
if(Int32.TryParse(Console.ReadLine(), out mainMenuChoice))
{
if (mainMenuChoice == 1)
Option1();
else if (mainMenuChoice == 2)
Option2();
else if (mainMenuChoice == 3)
Option3();
else if (mainMenuChoice == 4)
Option4();
else
Console.WriteLine("you didnt enter a valid input! try again.");
}
else
{
Console.WriteLine("you didnt enter a valid input! try again.");
}
Run Code Online (Sandbox Code Playgroud)
并在TryParse的else部分中为您的用户重复警告消息if.
当命令行上的字符无法转换为整数并分配给out参数时,Int32.TryParse返回false mainMenuChoice.