![](/img/trans.png)
[英]How to fix error using equalsIgnorecase in java netbeans?
[英]JAVA looping logic error with NOT .equalsIgnoreCase()
我正在嘗試在while循環中使用equalsIgnoreCase()來嘗試檢查是否使用NOT(!)運算符編寫了非預期的內容。 例如:
String temp="A";
boolean x =(!temp.equalsIgnoreCase("a")) ;
看,這與while循環一起使用。 如果不是A,它將繼續循環,但下一行不會
boolean x =(!temp.equalsIgnoreCase("a") || !temp.equalsIgnoreCase("b")) ;
這似乎不再起作用。 無論您鍵入什么,即使它是a或b,都將返回true。 因此,當我使用整行代碼來檢查未使用的任何字母時:
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來查看是否一切正常,並且當輸入其中一個字母時它似乎完美地循環了。
即使輸入的內容等於其中一個字母,它也會循環播放。
是的,當然可以。
您要求它在不是A
或不是B
。 好吧, A
和B
都不能... ...如果值等於B
那么它將不等於A
因此第一個操作數將使循環繼續進行。 如果該值等於A
那么它將不等於B
因此第二個操作數將使循環繼續進行。
你要改變的解決方案,是正確的-你想要的值不是A
而不是B
(也就是說,它的A 和 B都)。
另外,您可以在內部使用OR,但在整個過程中使用NOT:
while (! (temp.equalsIgnoredCase("A") || temp.equalsIgnoreCase("B") || ...))
我仍然不明白為什么OR無效,而AND無效
使用||
的表達式 在任何給定的temp值下,它將始終為true 。 因為, temp不能同時為a
和b
。 如果是a
,則||
的第二部分 將為true ,如果等於b
或任何其他值,則第一部分將為true ,因此在兩種情況下都使整個表達式為true 。
使用&&
,只有當temp既不是a
也不是b
,您的while
才會true
。
另外,如果要針對多個值測試溫度 ,則可以將while
條件更改為更簡單:
while (!"ABDPS".contains(temp.toUpperCase())) {
}
這是犯規邏輯。 編碼
(!temp.equalsIgnoreCase("A") || !(temp.equalsIgnoreCase("B")) ||!temp.equalsIgnoreCase("D")|| !temp.equalsIgnoreCase("P") || !temp.equalsIgnoreCase("S"))
手段
如果char不是A,不是B,不是D,不是P或不是S。它將始終為true,因為char是A,所以它既不是B,D,S也不是P。其他。
如果您希望它是OR邏輯,則應為:
(!(temp.equalsIgnoreCase("A") || (temp.equalsIgnoreCase("B")) ||temp.equalsIgnoreCase("D")|| temp.equalsIgnoreCase("P") || temp.equalsIgnoreCase("S")))
這意味着,不是當char是A,B,D,S或P時
這都是關於邏輯的。
OR B表示當A為true或B為true或兩者都為true時為true。
在您的特殊情況下,equalsIgnorecase()之一只能正常工作,因此您編寫了類似重言式的語句,這意味着無休止的循環。 您可以在此處閱讀有關布爾代數的信息: http : //en.wikipedia.org/wiki/Boolean_algebra_%28structure%29
有點理論,但它解釋了編寫布爾表達式時需要了解的內容。 希望這可以幫助 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.