我正在尝试在 while 循环中使用 equalsIgnoreCase() 来尝试检查是否使用 NOT (!) 运算符编写了预期写入的内容之外的内容。例如:
String temp="A";
boolean x =(!temp.equalsIgnoreCase("a")) ;
看,这适用于 while 循环。如果不是 A,它将继续循环,但下一行不会
boolean x =(!temp.equalsIgnoreCase("a") || !temp.equalsIgnoreCase("b")) ;
这似乎不再起作用了。这将返回 true,无论您键入什么,即使它是 a 或 b。因此,当我使用整行代码检查任何不应该使用的字母时:
while (!temp.equalsIgnoreCase("A") || !(temp.equalsIgnoreCase("B")) ||!temp.equalsIgnoreCase("D")|| !temp.equalsIgnoreCase("P") || !temp.equalsIgnoreCase("S"))
{ ***Do Code***}
它会循环您输入的任何内容,即使它等于其中一个字母。
当有多个 !temp.equalsIngnoreCase 时,代码不能使用 OR (||)。
我可以让它工作的唯一方法是将 OR 更改为 AND
while (!temp.equalsIgnoreCase("A") && !(temp.equalsIgnoreCase("B")) && !temp.equalsIgnoreCase("D")&& !temp.equalsIgnoreCase("P") && !temp.equalsIgnoreCase("S"))
即使我似乎找到了解决方案,但我仍然不明白为什么 OR 不起作用但 AND 起作用。我删除了 NOT 以查看是否一切正常,当输入其中一个字母时,它似乎完美循环。