可能有一个简单的问题,但在哪里谷歌它似乎问题 在if语句的末尾是一个分号,问题是eclipse给我语法错误,要求在else if语句中删除我的else,这几乎一直发生在我身上,我最终使用了多个IF。
if(saleStatus == false || offerPrice <= currentOffer)
{
System.out.print("Error, sale is not open");
return false;
}
else if(currentOffer >= reservePrice)
{
saleStatus = false;
}
答案 0 :(得分:3)
如果您指定它将返回一些内容,那么您的函数可以使用的每个路径都必须返回一个值。
在这种情况下,您可能已将其指定为
access_modifier boolean function_name(params){
... // ^return type
}
因此,所有代码路径都必须返回一个布尔值。
在您的代码中,如果它采用else...
路径,并退出而不返回任何内容,则不允许这样做。
else if(currentOffer >= reservePrice)
{
saleStatus = false;
//return something here (null if you don't care)
}
//or return something here (which all code-paths hit)
如果你使用像 Eclipse 这样的IDE,它可以提前警告你这样的事情。
答案 1 :(得分:1)
return
块中没有else
声明。如果在方法中声明了返回类型,则如果代码进入else块,该方法将不知道返回什么。
将一个放入其中或放在(*)之后。
答案 2 :(得分:0)
在第一个if中,你返回一个值,所以指定“else”是没有意义的,因为该方法的其余部分没有被执行。
一些开发人员在代码质量函数中避免使用多个return语句。
答案 3 :(得分:0)
我将代码包装在一个类声明中,只有最少的附加声明,并在整个if-else结构之后返回,Eclipse没有显示任何错误。我建议编写一个类似的最小完整程序,确实显示问题并发布它。
对于第二次测试,你不需要“else if”而不是“if”,但它应该是无害的。
public class Bad {
boolean saleStatus;
int offerPrice;
int currentOffer;
int reservePrice;
public boolean problem() {
if(saleStatus == false || offerPrice <= currentOffer)
{
System.out.print("Error, sale is not open");
return false;
}
else if(currentOffer >= reservePrice)
{
saleStatus = false;
}
return true;
}
}