2012-04-03 4 views
2

私はこのメソッドが何をするのかは分かりません。誰かが私の理解を助けてくれますか?javaの戻り値の構文

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

奇妙な例です。 'isTrue()'と 'isFalse()'は本当に両方ともfalseである可能性がありますか? – EJP

+0

多分それはファジー論理シミュレータですか? – birryree

答えて

8

ある:

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

3

これは、これはと評価フォームa ? b : cを有するネストされたternary operatorsの場合である(略)三

a ? b : c 

手段

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

ザ・ "は?:​​" 三項演算子です。それは "疑問符の前の条件が真である場合"を意味し、その後、コロンの前にあるものを使用し、そうでなければコロンの後のものを使用します。

あなたが投稿したコードは、A!isTrue() && !isFalse() && !neither())、B!isTrue() && isFalse()場合、isTrue()場合C!isTrue() && !isFalse() && neither()場合、それ以外の場合はDを返します。

0

これはternary operatorと呼ばれます。

isTrue()?a:b; 
上記のコードで

isTrueが真であればそれ以外の場合はbが返され、返されます。

あなたはネストされた3項演算子を持っています。それは偽bが を返され、それがある場合にどちらのcはdが返されますそれ以外の返送された場合isTrueが返され、そうでない真であることを意味し

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

@birryree与えられた究極のコード例です。

0

あなたの疑問は非常に明白です。このタイプの構文を我々はterinary演算子と呼びます。

構文::私は下に書いています実際の構文その後、偽の実行falseパーツが実行されます場合は、上記の文で

Condition ? True part : False part ; 

、条件が真実行された場合は、真部分が実行されます。

例:

int x=10; 

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

出力:

印刷10(真のManojさん)*

私は、これらの数行があなたの疑問をクリアするために役立つと思います。

+1

あなたの書式設定は真剣にねじ込まれています... – xfix