【问题标题】:Else if statement within a calc() type method returning the incorrect valuecalc() 类型方法中的 else if 语句返回不正确的值
【发布时间】:2013-11-08 00:28:21
【问题描述】:
public double calcTuition()
    {
        if (isGraduating == 'y')
        {
            return (Math.round((creditHours * 90.00 * 100.0))) / 100.0;
        }
        else if (isGraduating == 'n' && creditHours > 21)
        {
            return (Math.round(1000.0 + (creditHours - 21) * 90.00 * 100.0)) /100.0;
        }
        else if (isGraduating == 'n')
        {
            return (Math.round((1000.0 * 100.0))) /100.0;
        }

    }

我这里有这个 java 代码的 sn-p,它一直告诉我它没有返回应有的双精度值,这让我很困惑为什么。我唯一能想到的是“creditHours”是整数,所以我将它们转换为双打,这没有任何区别。我应该在这里使用 case 语句而不是 else if 吗?

编辑:非常感谢您的快速响应。老实说,我的意思是,看着我犯的愚蠢错误我不知道你们中有一半人如何回答这些问题,我敢肯定,我一遍又一遍地回答,仍然有耐心让他们发人深省的答案.我一听到野马在他的帖子中说“默认”,我就知道出了什么问题。 再次感谢这真是一个很棒的社区。​​p>

【问题讨论】:

  • 如果没有if子句满足会怎样?
  • 如果isGraduating 总是'y' 或'n',最后的else if 应该是一个简单的else。如果isGraduating 可以有任何其他值,您需要说明在这种情况下该怎么做。
  • @user2967104 如果解决了您的问题,请接受 broncoAbierto 的回答。

标签: java if-statement methods


【解决方案1】:

编译器看到的是三种情况下要做什么,但它无法知道默认情况下要做什么。如果if 条件都没有返回 true 怎么办?

为了让你的程序正常工作,你应该默认添加一个return语句,或者把最后一个else if变成一个else

【讨论】:

    【解决方案2】:

    您始终可以在返回之前插入调试行,以便查看实际值。

    你应该总是在 java 中返回某种值,在这段代码中所有的情况都可能是假的,所以你不会有一个 double 可以返回。

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多