我已经在if语句中拥有它时,我必须在方法中有一个return语句吗?

时间:2014-06-21 15:01:12

标签: java

我得到了如下功能:

public double getCost(String bookName)
{
    if(bookName.equals(arrayOfBook[2]))
    {
        return arrayOfCost[2];
    }
}

arrayOfCost是一个double数组。所以我已经有一个声明在这里返回double值。但是编译器仍然说我在这个函数中缺少return语句。那是什么原因?

3 个答案:

答案 0 :(得分:3)

是的,你确实需要一个return语句(事实上,编译器告诉你)。这是因为无论条件如何,您的方法都必须返回一些内容。换句话说,您的程序需要指定条件为false时发生的情况。例如,你可以返回一个零,一个无穷大,一个"而不是一个数字"常数,等等。

唯一的例外是void方法:它们最后不需要return语句,并且允许您在其他分支中拥有return

答案 1 :(得分:2)

if语句是假的怎么办?在这种情况下,不会返回任何内容,这是不允许的。

必须编写代码,以便方法在所有可能的情况下返回某些内容,或者如果由于某些异常事件而无法返回某些内容,则必须抛出异常。

后者的一个例子:

public Bar checkFoo() throws FooException {
   if (baz) {
      return new Bar();
   }  else {
      throw new FooException("baz was false");
   }
}

答案 2 :(得分:0)

如果if不成功,将不会有回报。

你至少需要把它作为其他的

public double getCost(String bookName)
{
    if(bookName.equals(arrayOfBook[2]))
    {
        return arrayOfCost[2];
    }
    else return -1;

}