boolean riddle = !(1 < 8 || (5 > 2 && 3 < 5));
布爾值是true或false。由此語法困惑的Java
! =不是
|| =或
& & =和
但我還是不明白這個語法...有人可以解釋我這句法excactly呢?
boolean riddle = !(1 < 8 || (5 > 2 && 3 < 5));
布爾值是true或false。由此語法困惑的Java
! =不是
|| =或
& & =和
但我還是不明白這個語法...有人可以解釋我這句法excactly呢?
只是對它進行解剖:
有一些比較如
5 > 2 ... true
3 < 5 ... true
這兩個使用& &拉在一起;所以真正的& &真實 - >真
1 < 8 ... true
,一個是或運算的休息;所以我們得到真正的或真實的 - >真
最後,不(真) - >假
長話短說:如果你不明白的全貌,把它分解成零部件你明白;然後再把它們拉到一起。
編輯:當然,我在我的解釋中使用的順序並不是現實中發生的事情。在那裏,首先評估1 < 8;這是事實;和「真或X」總是如此,其他比較甚至不計算。
tnx這更清晰! – Augurkturk
您從兩個根本不評估的表達式開始。 –
非!
運算符否定它在前面的內容。在這種情況下!()
它將產生與括號內部相反的內容。
||
或者操作員檢查一個條件或其他條件是否爲真。至少有一個條件返回true是正確的。
最後,&&
檢查條件語句的兩邊,看它們是否都是真的,並且它們都必須爲真才能繼續。
boolean riddle = !(1 < 8 || (5 > 2 && 3 < 5));
讓我們來分析它的Java的方式做:
boolean
:又來了一個布爾值,即true
或false
。riddle
:變量riddle
被聲明爲boolean
。=
:使用右邊的表達式初始化布爾變量riddle
。!(...)
:它返回一個布爾值,括號內布爾值的否定(=相反)。
bool1 || bool2
表達式,其中||
是"lazy OR"運算符。如果bool1
爲真,則無需評估bool2
。bool1
是1 < 8
,這是真的。bool2
不計算bool1 ||bool2
是真的!(...)
是假riddle
與false
初始化在某個時間點沒有被5 > 2
或3 < 5
評估。 Eclipse警告說,這兩個表達式是「死代碼」,可以刪除。
整個表達式可能是:
boolean riddle = !(1 < 8 || (5 > 2 && doSomethingVeryDangerous()));
其結果將是相同的,沒有方法的調用會發生在所有。
您遇到的問題是您在檢查它是否爲true
或false
的同時初始化。您無法將布爾值與整數進行比較。如果你想這樣做,那麼你需要以另一種方式解決它,通過從一種數據類型轉換到另一種數據類型,或者在解決方案中涉及另一個變量。您需要爲您解決語法問題的方式是把它像這樣:
你怎麼做的......
boolean riddle = !(1 < 8 || (5 > 2 && 3 < 5));
如何解決潛在的吧...
boolean riddle;
"...some code to decide if riddle will be true or
false and assign it to the variable riddle..."
if (riddle == true){
"...do some code here...";
}
if (riddle == false){
"...do some code here...";
}
或者你可以通過不使用布爾值作爲數據類型來解決問題,而只能使用像這樣的整數...
int riddle;
"...some code to decide what value riddle will
have and assign it to the variable riddle..."
if (riddle < 8 && riddle > 1){
"...do some code here...";
}
你不瞭解什麼它?它完全按照你寫的。你在問這個具體的行嗎? – ItamarG3
是的具體行是什麼? – Augurkturk