c#对特定输入的验证

本文关键字:验证 输入 | 更新日期: 2023-09-27 18:09:08

我对这个线程有点陌生,但在简短的总结中,我遇到了一个小的验证问题。基本上,我正在尝试制作一个简单的验证程序,该程序将收集用户的输入,然后确定输入是否有效,输入是否正确实现,数字是否为正,并且数字必须是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;

c#对特定输入的验证

您的错误是因为您使用了OR操作符。例如,用户print 3。在你的语句中,一个条件返回false (input != 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);

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

var count = (new string[]{"1","2","3","4","5"}).Contains(Console.ReadLine()) ? 1 : 0;