我得到了如下功能:
public double getCost(String bookName)
{
if(bookName.equals(arrayOfBook[2]))
{
return arrayOfCost[2];
}
}
arrayOfCost是一个double数组。所以我已经有一个声明在这里返回double值。但是编译器仍然说我在这个函数中缺少return语句。那是什么原因?
答案 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;
}