【问题标题】:Conditions in Ternary Operator - Java三元运算符中的条件 - Java
【发布时间】:2014-10-19 13:18:55
【问题描述】:

我有一个简单的 if/elseif 条件,我试图将其转换为带有 Ternay 运算符的 return 语句以实现代码冗余,但我无法做到。

任何帮助将不胜感激,谢谢。

这是我的代码 sn-p:

if (val.equals("a")||val.equals("s")){
    return true;
} 
else if (val.equals("b")||val.equals("t")) {
     return false;
}

return true;

有人可以建议如何处理上述 if/else-if 的 return 语句(三元运算符)吗?

【问题讨论】:

  • 请不要在别人回答后更改问题。如果您有新问题,请将其作为新问题发布。
  • 好的,我会回复我的问题并添加一个新问题,很抱歉给您带来不便。

标签: java if-statement return


【解决方案1】:
return !(val.equals("b") || val.equals("t"))

其余的都是多余的,val不能同时等于“a”或“s”,等于“b”或“t”,所以你基本上需要检查它是否等于“b”或“t” ,并在这种情况下返回false,在任何其他情况下返回true

【讨论】:

    【解决方案2】:

    这里不需要条件运算符。只要val 既不是b 也不是t,您的代码就会返回true

    return !(val.equals("b") || val.equals("t"));
    

    或:

    return !val.equals("b") && !val.equals("t");
    

    as 周围的第一个条件完全不相关,因为底部的“默认”return true 已经包含这些情况。

    编辑:既然您已将返回类型更改为 int,那么这个 可以合理地与条件运算符一起使用:

    return val.equals("b") || val.equals("t") ? 0 : 1;
    

    【讨论】:

    • 我已经编辑了我的问题,可以返回一个整数而不是布尔值吗?
    • @user3652212:嗯,它可以,虽然我认为这是一个奇怪的 API 设计。以使所有现有答案无效的方式编辑问题也不是一个好主意...
    • @Jon Skeet:是的,以后我会确保在问题得到解答后不再编辑。
    【解决方案3】:
    return !(val.equals("b") || val.equals("t"));
    

    这是返回 false 的唯一条件 - 因此您无需检查第一个条件。

    【讨论】:

      【解决方案4】:

      试试下面的:

      boolean b = ( val.equals("b") || val.equals("t") ) ? false : true;
      return b;
      

      【讨论】:

      • 怎么样? "c"?那也应该返回true
      • 应该颠倒陈述。谢谢@Baz
      • 当你在做x = condition ? false : true; 时,这是一个标志,表明你是多余的。 :-) 只需x = !condition; 就足够了。 (不是我的 dv)
      • 是的,我在开发的时候绝对不会写这样的一行,但是那个家伙要求一个三元表达式,我想坚持这个话题。
      【解决方案5】:
      return !(val.equals("b") || val.equals("t"))
      

      【讨论】:

        猜你喜欢
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 2010-10-20
        • 2019-01-18
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        • 2013-04-26
        相关资源
        最近更新 更多