我对这个帖子有点新意,但总结一下,我遇到了一个小问题。基本上,我试图制作一个简单的验证程序,收集用户的输入,然后确定输入是否有效,输入是否正确实现,数字是正数,还是数字成为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;
答案 0 :(得分:4)
您的错误是因为您使用OR operator。
例如,用户打印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);
答案 1 :(得分:1)
你已经得到了关于谓词逻辑问题的答案。但你可以用linq更简化:
products table:
-ID
-name
prices table
-ID
-product_id
-amount
-effective_datetime