joyner_zhang
joyner_zhang
采纳率77.8%
2019-11-27 09:52

关于Java ?和:三元运算符的疑问

已采纳

您好!今天我在刷LeetCode的时候,有道题我想直接用三元表达式去写,看着简洁,但没想到,老是报错....我也不知道啥问题啊,最近感冒了,脑子很晕,总感觉哪里不对,但是就是看不出来,
图片说明

图片说明

我不知道哪里错了。谢谢指正!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • wojiushiwo945you 毕小宝 2年前

    三目表达式返回的时一个值,必须要把它赋给一个变量才行,而你的代码中是不同的处理动作,这是 if 的功能,不是三目表达式的。

    ans= height[left]>= maxLeft?a:b;
    

    而你想通过不同的值,走不同的赋值动作是行不通的。三目只会返回值,而不是执行一个动作。

    点赞 2 评论 复制链接分享
  • loreshare loreshare 2年前

    运算符优先级的问题,
    ?:优先级高于=,+=等运算符,所以把括号加上。
    http://c.biancheng.net/view/794.html
    见表一。

    点赞 1 评论 复制链接分享
  • u011060906 ah_ty 2年前

    这就好比你在代码中写了一行变量,却没有人接收它,打个比方

    int a=0;
    a;
    System.out.println(a);

    你的三木运算就好比这一行a,它自然报错

    点赞 1 评论 复制链接分享
  • lppzyt lppzyt 2年前

    运算之后没有把值赋给变量。maxleft = height[left]>=maxleft?(maxleft=height[left]:(ans = ans+(maxleft-height[left])));这样应该就没问题了。三目运算符之后,需要赋值的。

    点赞 1 评论 复制链接分享