C#验证特定输入

时间:2015-08-22 06:50:29

标签: c# validation

我对这个帖子有点新意,但总结一下,我遇到了一个小问题。基本上,我试图制作一个简单的验证程序,收集用户的输入,然后确定输入是否有效,输入是否正确实现,数字是正数,还是数字成为0, 1, 2, 3, 4 or 5

整个程序运行,但我遇到的问题是每种形式的输入都被视为错误,因此显示我的错误声明,即使它是一个有效的输入,例如5。我觉得有一个小错误,我已经做了这个导致这个,所以有什么建议吗?

 int user_input;
 int count = 0;
 do
 {
    Console.Write("\n\nUser Input:"

    if ((int.TryParse(Console.ReadLine(), out user_input) == false)||(user_input < 0 || user_input != 0 ||user_input != 1 || user_input != 2
                || user_input != 3 || user_input != 4 || user_input != 5)) 
    {

       Console.WriteLine("Error : the action entered is not a valid number.");
       count = 0;
    }
    else
       count = 1;

2 个答案:

答案 0 :(得分:4)

您的错误是因为您使用OR operator。 例如,用户打印3。在你的陈述中,一个条件返回falseinput != 3),但所有其他条件都返回true ..这就是你总是进入if condition的原因..

您可以使用AND运算符,但我可以建议您简化您的情况。它会更容易理解和可读:

var count = 0;
do
{
   Console.Write("\n\nUser Input:");

   int user_input;
   if ((int.TryParse(Console.ReadLine(), out user_input) == false) || (user_input < 0 || user_input > 5))
   {

      Console.WriteLine("Error : the action entered is not a valid number.");
      count = 0;
   }
   else
      count = 1;
} 
while (count != 1);

答案 1 :(得分:1)

你已经得到了关于谓词逻辑问题的答案。但你可以用linq更简化:

products table:
-ID
-name

prices table
-ID
-product_id
-amount
-effective_datetime