這僅僅是簡單的布爾邏輯。你可以自己嘗試。比方說Ran1
是3,Ran2
是4,Ran3
是3.表達式評估的是什麼?
Ran1 != Ran2 -> 3 != 4 -> True
Ran1 != Ran3 -> 3 != 3 -> False
Ran2 != Ran3 -> 4 != 3 -> True
這些都不是所有真正的,所以AND
荷蘭國際集團在一起是假,和你的循環將打破。但那不是你想要的,當它們完全相同時,你只希望它是假的。如果你注意到,你現在擁有它的方式,如果三個變量中的任何一個與其他變量相等,循環就會中斷。
從積極方面而不是雙重否定方面來考慮更容易。什麼時候所有的變量都一樣?這是當Ran1 == Ran2
,Ran1 == Ran3
和Ran2 == Ran3
,或在Java語法:
Ran1 == Ran2 && Ran1 == Ran3 && Ran2 == Ran3
現在,只要這是不真的,你想你的循環繼續下去,所以一定要包裝在括號和使用NOT
操作!
:
while (!(Ran1 == Ran2 && Ran1 == Ran3 && Ran2 == Ran3)) {
...
}
就是這樣,但如果你不想那麼你可以簡單地表達使用布爾邏輯來使用括號。 !(A && B)
相同!A || !B
:
A | B | A && B | ! (A && B) | !A | !B | !A || !B
---+-----+----------+--------------+-----+------+-----------
T | T | T | F | F | F | F
T | F | F | T | F | T | T
F | T | F | T | T | F | T
F | F | F | T | T | T | T
您可以驗證自己,!(A && B && C)
相同!A || !B || !C
。文字
while (Ran1 != Ran2 || Ran1 != Ran3 || Ran2 != Ran3) {
...
}
在推理方面看::因此,你可以把上面的while
循環到:
while (!(Ran1 == Ran2) || !(Ran1 == Ran3) || !(Ran2 == Ran3)) {
...
}
,或者您希望循環繼續,只要任何對這三個變量不等於。您的初始表達Ran1 != Ran2 && Ran1 != Ran3 && Ran2 != Ran3
只會繼續循環,只要全部對的三個變量不相等。
更改爲:** while(Ran1!= Ran2 || Ran1!= Ran3 || Ran2!= Ran3)** – spiritwalker 2013-03-19 01:56:44