这适用于" draw"但不是丢弃"。我只是想让它验证输入是否是两者中的一个。我经常遇到这个问题并且不明白为什么。有没有人看到这个问题?
while(!(choice.equalsIgnoreCase("draw") && !(choice.equalsIgnoreCase("discard"))))
感谢。
答案 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
。