3 回答

TA貢獻1848條經(jīng)驗 獲得超6個贊
在這種情況下,您甚至不需要三元運算符:
cmdCse.setVisible(selection.toLowerCase().equals("produkt"));
或者,清潔工:
cmdCse.setVisible(selection.equalsIgnoreCase("produkt"));
您的版本:
selection.toLowerCase().equals("produkt")? cmdCse.setVisible(true): cmdCse.setVisible(false);
在語義上是不正確的:三元運算符應表示替代的賦值,它不能完全替代if
語句。還行吧:
double wow = x > y? Math.sqrt(y): x;
因為你要么分配x
或Math.sqrt(y)
到wow
,根據(jù)條件。
我的2cents:僅在使程序更清晰時才使用三元運算符,否則最終將得到一些難以理解的單線。

TA貢獻1773條經(jīng)驗 獲得超3個贊
三元運算符與if語句不完全一樣。三元運算符必須從雙方“返回”某些內(nèi)容,因此將像setVisible()這樣的void方法調(diào)用放在那兒是行不通的。
相反,您可以完全不用三元運算符來執(zhí)行以下操作:
cmdCse.setVisible(selection.toLowerCase().equals("product"));
但是,為了說明這一點,三元等價物看起來像這樣:
cmdCse.setVisible(selection.toLowerCase().equals("product") ? true : false);
請注意,現(xiàn)在三元運算符如何在兩側(cè)“返回”真或假,而不是簡單地調(diào)用void方法。

TA貢獻1811條經(jīng)驗 獲得超5個贊
直接從文檔
如果使代碼更易讀,請使用?:運算符而不是if-then-else語句。例如,當表達式緊湊且沒有副作用(例如賦值)時。
如果您cmdCse.setVisible(true / false);
不返回任何內(nèi)容,并且該操作還具有副作用(它會更改的狀態(tài)cmdCse
),因此此處不能使用條件運算符(當您使用運算符時,?
和:
分支必須具有相同的返回類型)。
順便說一句,請注意.. ? .. : ..
應稱為conditional operator
添加回答
舉報