2016-12-28 8 views
-3

私はゲームで耐久性のあるアイテムを作成するためのバックボーンとしてクラスを作成していました(Minecraftのピックまたはソードによく似ています)。三項演算子:Javaの三項演算子と同じ変数の代入

public void setMaxDurability(int newMax) { 
    newMax > MAX_DURABILITY ? maxDurability = MAX_DURABILITY : maxDurability = newMax; 
} 

このコードは、>「トークンに構文エラー 『と言って、Eclipseの「>」オペレータでエラーがスローされます』、 - >期待されます。」明確化のために、newMaxは変数maxDurabilityをに設定する新しい最大耐久性ですが、定数MAX_DURABILITYより大きくすることはできません。すべての型はint型です(そして定数はfinalです)ので、問題の内容を理解できません。

私は

public int setMaxDurability(int newMax) { 
    return maxDurability = (newMax > MAX_DURABILITY ? MAX_DURABILITY : newMax); 
} 

を使用して作業する方法を得ることができたが、最初のコードブロックが機能しなかった理由を私は思っていました。どんな助け?

+3

注文。 '?'と ':'は '='の前に来ます。だからあなたがしようとしていたのは効果的でした。(newMax> MAX_DURABILITY?maxDurability)=(MAX_DURABILITY:maxDurability)= newMax;これはあまり意味がありません。 –

+0

ちなみに、戻り値の型を 'int'に変更する必要はありませんでした。あなたは 'void'のままにして、' return'を落とすことができます。 –

+0

Ooooh、ok。私は戻り値の型を変更する必要はなかったことを知っています。それは、デバッグを試みた後に元に戻すのを忘れてしまったことです。だから私は、あなたは常に三項演算子の外で代入をしなければならないと仮定します。 –

答えて

0

は次のようになります。操作の

public void setMaxDurability(int newMax) { 
    maxDurability = newMax > MAX_DURABILITY ? MAX_DURABILITY : newMax; 
}