2012-04-03 34 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