0
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代码,它一直告诉我它没有像预期的那样返回一个double,这让我很困惑为什么。我唯一能想到的是'creditHours'是int's,所以我将它们转换为双打,这没有任何区别。我应该在这里使用case语句而不是else if吗?

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

4

2 回答 2

2

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

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

于 2013-11-08T00:31:26.433 回答
0

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

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

于 2013-11-08T00:32:06.007 回答