【问题标题】:What's wrong with this Java syntax? [duplicate]这个 Java 语法有什么问题? [复制]
【发布时间】:2016-08-03 06:12:16
【问题描述】:
height[left] < height[right]? left++ : right--;

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

谢谢!

【问题讨论】:

  • 您能在您的代码上下文中向我们展示这个三元表达式吗?

标签: java if-statement


【解决方案1】:

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

三元运算有回报

示例:

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--;

【讨论】:

    【解决方案2】:

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

    如果您的意思是声明,请使用if 而不是三元运算符:

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

    【讨论】:

    • @ĐăngKhoaHuỳnh 为什么?你不知道结果是否应该是方法的返回值,问题没有说明。
    • 哦,对不起,我认为您将if 用作三元运算符。
    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2012-07-07
    • 2012-05-02
    相关资源
    最近更新 更多