2013-01-13 129 views
0

我想检查用户的输入是否是数字。如果是,我希望该功能继续运行,否则要提醒他并再次运行。检查用户输入是否是数字

Console.WriteLine(String.Concat("choose your action" ,Environment.NewLine , 
           "1.Deposit", Environment.NewLine, 
           "2.Withdraw", Environment.NewLine, 
           "3.CheckAccount")); 
string c = Console.ReadLine(); 
int value = Convert.ToInt32(c); 

if (value==char.IsLetterOrDigit(value)) //<----- no good why? 
{ 
    switch (value) 
    { 
     case 1: 
      Deposit(); 
      return; 
     case 2: 
      Withdraw(); 
      return; 
     case 3: 
      CheckAccount(); 
      return; 
    } 
} 
+0

不需要使用'String.Concat'队友!这里有一个运算符,即字符串连接运算符'+',它在对'String.Concat'的调用中被优化。 – antonijn

回答

10

只需使用:

string c = Console.ReadLine(); 
int value; 
if (int.TryParse(c, out value)) { /*Operate*/ } 

编辑:在代码适应作者的评论:

if (int.TryParse(c, out value) && value >= 1 && value <= 3) { /*Operate*/ } 
+0

噢甜,它的工作.thanks :)))) – TBK

+0

如何添加一个检查,看看这个数字是1-3,它不是一个float或double之间? – TBK

+0

@ user1942298如果数字不是整数,那么'int.TryParse'将返回'false'。我编辑了我的帖子,以适应您的第二个要求。 – Mir

1

int值= Convert.ToInt32(C); 如果c不是只包含整数的字符串,这将会失败。 使用try catch来处理这种情况。

+0

我会使用'TryParse',它要快得多。我还没有.NET测试,但单给了我649毫秒,你的方法和47毫秒'TryParse'此测试:http://pastebin.com/HfLjqTqg。 – antonijn