2012-04-03 78 views
2

我不太確定這個方法做了什麼,或者更好,我不確定什麼「:」的意思。有人能幫我理解嗎?在java中的返回值語法

private int guess() 
{ 
     return isTrue() ? A : isFalse() ? B : neither() ? C : D; 
} 
+0

奇怪的例子。可以'isTrue()'和'isFalse()'真的都是假的? – EJP 2012-04-03 09:55:22

+0

也許這是一個模糊邏輯模擬器? – birryree 2012-04-03 11:52:05

回答

8

這是嵌套ternary operators它具有的計算結果爲形式a ? b : c的情況下:

if (a) then b, else c 

所以你的問題分解成這樣:

if (isTrue()) { 
    return A; 
} else if(isFalse()) { 
    return B; 
} else if(neither()) { 
    return C; 
} else { 
    return D; 
} 
+0

這是有道理的。謝謝! – FranXh 2012-04-03 04:44:53

3

這是三元

a ? b : c 

裝置(大致)

if (a) 
    return b; 
else 
    return c; 
0

的 「:」 是三元運算符。它意味着「如果問號前的情況是真的」,則使用冒號前的東西,否則冒號後的東西。

您發佈的代碼將返回A如果isTrue()B如果!isTrue() && isFalse()C如果!isTrue() && !isFalse() && neither()D否則(!isTrue() && !isFalse() && !neither())。

0

這叫做ternary operator

isTrue()?a:b; 

在上面的代碼

如果IsTrue運算爲真,將被返回,否則B將被返回。

你有一個嵌套的三元運算符。

isTrue() ? A : 
      isFalse() ? B : 
      neither()  ? C   : D; 

這意味着IsTrue運算爲真返回,否則,如果它是返回 假B和如果它是既不Ç返回否則d將被返回。

@birryree給出了最終的示例代碼。

0

你的疑問很明顯。這種類型的語法我們稱爲terinary運算符。實際的語法我寫如下:

語法:

Condition ? True part : False part ; 

在上面的語句,如果執行的真實情況,然後如果執行爲假,則假部分將執行真一部分將執行。

例子:

int x=10; 

if(x==10) ? Print 10(true its Manoj) : Print Not 10(false its Anyone else) ; 

輸出:

打印10(真正的馬諾)*

我覺得這幾行,將有助於清除你的疑慮。

+1

您的格式嚴重受損 – xfix 2012-04-03 06:10:06