1

可能有一个简单的问题,但是无论我在哪里搜索,似乎问题是 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;
        }
4

4 回答 4

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 ,它可以提前警告您这样的事情。

于 2012-11-05T08:17:29.337 回答
1

您的块中没有return声明。else如果在您的方法中声明了返回类型,则如果代码进入 else 块,该方法将不知道要返回什么。

在其中或在 (*) 之后放置一个。

于 2012-11-05T08:17:33.620 回答
0

在第一个 if 中,您返回一个值,因此指定“else”没有意义,因为该方法的其余部分未执行。

一些开发人员为了代码质量避免在函数中使用多个返回语句。

于 2012-11-05T08:26:15.503 回答
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;
    } 
  }
于 2012-11-05T10:03:53.910 回答