程序停止工作(如果没有输入数字)

时间:2014-08-21 10:19:14

标签: c# parsing int

Console.Write("\n\nHow many seats do you want to reserve?\n");
int numSeatReserveLucy = int.Parse(Console.ReadLine());

这就是我的代码中的部分我想要失败安全。它工作正常...如果你按数字...但如果你按一个字母,那么程序停止工作..在我关闭程序之前显示许多奇怪的事情。 我需要用什么代码来表达:"抱歉这不是数字" 然后回滚,这样你就可以继续按下错误的地方。

应该公平,但我不记得怎么做。

2 个答案:

答案 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
}