验证两种选择之一

时间:2014-11-17 04:35:11

标签: java validation

这适用于" draw"但不是丢弃"。我只是想让它验证输入是否是两者中的一个。我经常遇到这个问题并且不明白为什么。有没有人看到这个问题?

while(!(choice.equalsIgnoreCase("draw") && !(choice.equalsIgnoreCase("discard"))))

感谢。

3 个答案:

答案 0 :(得分:1)

如果您要检查输入是否是其中之一,则需要执行

while(choice.equalsIgnoreCase("draw") || choice.equalsIgnoreCase("discard"))

现在,当choice既不是"draw"也不是"discard"

时,您才进入循环

答案 1 :(得分:1)

您忘记关闭"绘制"测试,你可以使用

while (!(choice.equalsIgnoreCase("draw")) && 
       !(choice.equalsIgnoreCase("discard")))

while (!choice.equalsIgnoreCase("draw") && 
       !choice.equalsIgnoreCase("discard"))

或使用De Morgan's Laws之类的

while (!(choice.equalsIgnoreCase("draw") || 
         choice.equalsIgnoreCase("discard")))

答案 2 :(得分:0)

简化它(并在将来看你的括号):

while(choice.equalsIgnoreCase("draw") || choice.equalsIgnoreCase("discard")) {
    // code
}

您的代码目前正在做的是:

!(choice.equalsIgnoreCase("draw") && !(choice.equalsIgnoreCase("discard")))

密切关注这种否定。它正在关闭整个表达式,因为你已经打开了太多的paren。只有在您输入true时才会评估为"discard"

如果你想这样说:

!choice.equalsIgnoreCase("draw") && !choice.equalsIgnoreCase("discard"))

然后这与您尝试评估的内容相矛盾 - 您想要检查其中一个是否评估为true。如果你更正了括号,那么它仍然是不正确的,因为它只评估这些语句的两个是否为false