2012-01-02 76 views
1

如何在不使用IF的情況下比較兩個值。我知道可以使用= ?或類似的東西。例如,讓我們比較兩個陣列列表ct的大小。對於這一點,我想用類似的代碼:在Java中使用'=?'比較兩個值

boolean answ = ? c.size() = t.size(); 
+0

爲什麼你想避免'if'?它可能揭示出你真正想要達到的目標......這僅僅是爲了分配的目的嗎? [這確實是使用trinary操作符的一個很好的理由...] – amit 2012-01-02 11:38:19

+0

並且比較具體到底是什麼? – fge 2012-01-02 11:38:47

+2

boolean answ =(c.size()== t.size()); – dkulkarni 2012-01-02 11:41:14

回答

6

嘗試boolean answ = c.size() == t.size();

三元運算符,?,用於獲取2個的一個答案,你不需要它,如果你只需要一個布爾答案。

0

要比較通常使用==而不是=的值,除非您要比較非原始值(如果您在類中正確覆蓋它,則必須使用equals方法)。

一個單一的=是用於作曲,而不是測試相等。

+1

對'String'的引用在這裏有誤解:實際上,您希望對所有*非原始值使用equals()。 'String'絕不是特別的。 – alf 2012-01-02 11:45:43

2

這應該工作:

boolean answ = c.size() == t.size(); 

什麼你可能還記得是短if else結構:

return c.size() == t.size() ? true : false; 
+0

後者不會編譯。 – alf 2012-01-02 17:50:41

+0

啊當然,回報一定要先......謝謝! – WarrenFaith 2012-01-03 03:44:42

4

如果你需要使用?你必須寫:

boolean answ = (c.size() == t.size() ? true : false); 

但是這比寫

boolean answ = (c.size() == t.size() ); 
1

你的意思是三元運算符長多少?

result = expr1 ? expr2 : expr3; 

如果expr1 true那麼result分配的expr2的結果,expr3否則結果。所以:

boolean answ = c.size() == t.size() ? true : false; 
2

該代碼將比較不使用if

boolean answ s= (c.size()==t.size()) ? true : false; 
+0

它正在使用,它只是寫得很快而且開銷也在那裏。爲什麼使用三元運算符,如果它沒有運行? – WarrenFaith 2012-01-02 14:23:29