2016-04-12 13 views
0
height[left] < height[right]? left++ : right--; 

if/else文を置き換えるために、上記の構文を使用したいと思います。私はそれが続くと思います(条件)? doX():doY()でも間違っています。このJava構文で何が問題になっていますか?

ありがとうございました!

+0

あなたは私達にあなたのコードのコンテキストで、この三元発現を示すことはできますか? –

答えて

3

三項演算子は、表現、ない声明です。式の結果を何にも割り当てていないので、コンパイラはそれを気に入らない。あなたが文としてこれを意味する場合

、三項演算子の代わりにifを使用します。

if (height[left] < height[right]) { 
    left++; 
} else { 
    right--; 
} 
+0

@ĐăngKhoaHuỳnhなぜですか?結果がメソッドの戻り値でなければならないかどうかはわかりませんが、質問にそのことが示されていません。 – Jesper

+0

ああ、申し訳ありませんが、私は同じケースとして三項演算子のために 'if'を使っていると思います。 –

0

操作が何かに値を代入されていません...

三項演算は、リターン

例持っているので、それは間違っている:あなたは、変数POSが割り当てられて見るよう

int a=0; 
int b=0; 
int left=0; 
int right=0; 
int pos=0; 
pos = a < b? left++ : right--; 

を三項演算の結果として

あなたの場合、変数が欠落している++またはright--割り当てられる予定:

??? = height[left] < height[right]? left++ : right--;