这个Java语法有什么问题?

时间:2016-04-12 14:39:08

标签: java if-statement

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

我想用上面的语法来替换if / else语句。我认为它遵循(条件)? doX():doY()但是有些错误。

谢谢!

2 个答案:

答案 0 :(得分:3)

三元运算符是表达式,而不是语句。你没有将表达式的结果赋给任何东西,所以编译器不喜欢它。

如果您将此表示为语句,请使用if而不是三元运算符:

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

答案 1 :(得分:0)

这是错误的,因为操作没有为任何东西赋值......

三元操作有回报

实施例

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

如您所见,变量pos被指定为三元运算的结果

在你的情况下,你错过了变量被留下++或右 - 将被分配:

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