【发布时间】:2016-08-03 06:12:16
【问题描述】:
height[left] < height[right]? left++ : right--;
我想用上面的语法来替换 if/else 语句。我认为它遵循(条件)? doX(): doY() 但有问题。
谢谢!
【问题讨论】:
-
您能在您的代码上下文中向我们展示这个三元表达式吗?
标签: java if-statement
height[left] < height[right]? left++ : right--;
我想用上面的语法来替换 if/else 语句。我认为它遵循(条件)? doX(): doY() 但有问题。
谢谢!
【问题讨论】:
标签: java if-statement
这是错误的,因为操作没有给任何东西赋值......
三元运算有回报
int a=0;
int b=0;
int left=0;
int right=0;
int pos=0;
pos = a < b? left++ : right--;
正如您所见,变量 pos 作为三元运算的结果被赋值
在您的情况下,您缺少的变量是 left++ 或 right-- 将被分配:
??? = height[left] < height[right]? left++ : right--;
【讨论】:
三元运算符是表达式,而不是语句。你没有将表达式的结果分配给任何东西,所以编译器不喜欢它。
如果您的意思是声明,请使用if 而不是三元运算符:
if (height[left] < height[right]) {
left++;
} else {
right--;
}
【讨论】:
if 用作三元运算符。