【问题标题】:Ternary Operator help in Java [closed]Java中的三元运算符帮助[关闭]
【发布时间】:2014-11-06 05:51:48
【问题描述】:
  public int getCurrentRemainingCr() {
        return (currentEarnedCr >= 120)?(REQUIRED_CR - currentEarnedCr):0;

我正在尝试使用三元运算符代替 if-else...基本上我的 if-else 暗示如果当前信用大于或等于 120,则将剩余信用设置为 0。虽然上面的代码在junit的测试方法中仍然会出现问题。

【问题讨论】:

  • 不明白为什么人们在没有任何 cmets 的情况下投反对票?
  • @MartinFrank 你在这里是什么意思?
  • 可能是因为您暗示您的方法不起作用,然后您向我们展示了一些不调用该方法的测试,并调用了我们看不到的其他方法。似乎有些人已经弄清楚了您要做什么。但如果不是这样,我们将没有足够的信息来帮助您。请阅读Minimal, Complete, Verifiable Exmaples
  • 好吧,你的速度更快@ajb - 你的问题缺少问题描述!你说你的单元测试失败了——但它是怎么失败的?你能提供更多信息吗?
  • 刚刚展示了junit中的类和测试类,抱歉开头信息不足

标签: java eclipse ternary-operator


【解决方案1】:

你的真/假结果是错误的。

三元运算符是:

(something) = (condition) ? (value if true) : (value if false);

因此“如果当前信用大于或等于120,则将剩余信用设置为0”将完成为:

return (currentEarnedCr >= 120) ? 0 : (REQUIRED_CR - currentEarnedCr);

【讨论】:

  • 谢谢,我做到了,但是在使用 junit 测试测试类中的方法时,我仍然遇到 2 次失败。我发布了更新
  • @gerryluci,因为这是一个不同的问题,你应该把它作为一个不同的问题发布。无论如何,这个很可能会因为一个简单的印刷错误而被关闭。
【解决方案2】:

你必须改变顺序

改变

return (currentEarnedCr >= 120)?(REQUIRED_CR - currentEarnedCr):0;   

return (currentEarnedCr >= 120)?0:(REQUIRED_CR - currentEarnedCr);

为什么?

Ternary Operator

 result = someCondition ? value1 : value2;

如果someConditiontrue result 变为value1 否则result 变为value2

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2014-09-25
    • 2014-02-08
    • 2011-03-12
    相关资源
    最近更新 更多