Console.Write("\n\nHow many seats do you want to reserve?\n");
int numSeatReserveLucy = int.Parse(Console.ReadLine());
这就是我的代码中的部分我想要失败安全。它工作正常...如果你按数字...但如果你按一个字母,那么程序停止工作..在我关闭程序之前显示许多奇怪的事情。 我需要用什么代码来表达:"抱歉这不是数字" 然后回滚,这样你就可以继续按下错误的地方。
应该公平,但我不记得怎么做。
答案 0 :(得分:3)
您需要使用int.TryParse
:
int numSeatReserveLucy;
if(!int.TryParse(Console.ReadLine(), out numSeatReserveLucy))
{
Console.WriteLine("You've not entered a number!");
}
正如@ siva.k在我的回答中已经注释掉,你也可以在while
循环中执行此操作,这样你的程序就会循环直到用户输入一个有效的格式化整数:
var response = Console.ReadLine();
// If above Console.ReadLine gets a valid integer
// the following while loop won't never executed
while (!int.TryParse(response, out numSeatReserveLucy))
{
Console.WriteLine("Sorry, didn't get a number");
response = Console.ReadLine();
}
答案 1 :(得分:3)
请改用int.TryParse
。此方法返回一个布尔值以指示解析状态。这样,如果返回false,则可以提示用户重新输入。
int seats = 0;
bool parseStatus = false;
parseStatus = int.TryParse(Console.ReadLine(), out seats);
if(!parseStatus)
{
//Prompt again, may be put the whole thing in a loop till you get the right input
}