gpt4 book ai didi

NOT .equalsIgnoreCase() 的 JAVA 循环逻辑错误

转载 作者:行者123 更新时间:2023-11-29 07:07:45 25 4
gpt4 key购买 nike

我正在尝试在 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 以查看是否一切正常,并且当输入其中一个字母时它似乎完美地循环。

最佳答案

it loops whatever you put in, even if it will equal one of the letters.

是的,当然有。

当它不是A 它不是B 时,您要求它继续运行。好吧,没有什么可以是 both AB...如果值等于 B 那么它不会t 等于 A 所以第一个操作数将继续循环。如果该值等于 A,则它不会等于 B,因此第二个操作数将继续循环。

您更改为 AND 的解决方案是正确的 - 您希望值不是 A 并且不是 B(即它既不是 A 也不是 B)。

或者,您可以在内部使用 OR,但在整个事物周围放置一个 NOT:

while (! (temp.equalsIgnoredCase("A") || temp.equalsIgnoreCase("B") || ...))

关于NOT .equalsIgnoreCase() 的 JAVA 循环逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17912331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com