nathan
nathan

Reputation: 39

Syntax error on else

Got probably a simple problem but where ever I google it it seems the problem is a semicolon at the end of the if statement, the problem is eclipse giving me the syntax error asking to delete my else on the else if statement, this happens nearly all the time for me and i end up using multiple IF's.

        if(saleStatus == false || offerPrice <= currentOffer)
        {
            System.out.print("Error, sale is not open");
            return false;
        }

        else if(currentOffer >= reservePrice)
        {
            saleStatus = false;
        }

Upvotes: 1

Views: 177

Answers (4)

Patricia Shanahan
Patricia Shanahan

Reputation: 26185

I wrapped your code in a class declaration, with minimum additional declarations, and a return after the whole if-else structure, and Eclipse shows no errors. I suggest writing a similarly minimal complete program that does show the problem, and posting it.

You do not need "else if" rather than "if" for the second test, but it should be harmless.

  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;
    } 
  }

Upvotes: 0

Maxime Ch&#233;ramy
Maxime Ch&#233;ramy

Reputation: 18871

In the first if, you return a value, so there is no point on specifying "else" because the rest of the method is not executed.

Some developers avoid multiple return statements in functions for code quality.

Upvotes: 0

Anirudh Ramanathan
Anirudh Ramanathan

Reputation: 46788

Every path your function can take must return a value, if you specify that it will return something.

In this case, you have probably specified it as

access_modifier boolean function_name(params){
...             // ^return type 

}

So, all code paths must return a boolean. In your code, if it takes the else... path, and exits without returning anything, that isn't permitted.

  else if(currentOffer >= reservePrice)
        {
            saleStatus = false;
            //return something here (null if you don't care)
        }
//or return something here (which all code-paths hit)

If you use an IDE like Eclipse, it can warn you in advance about things like this.

Upvotes: 3

Mob
Mob

Reputation: 11106

There's no return statement in your else block. If a return type is declared in your method, the method would not know what to return if the code enters the else block.

Put one in it or after (*).

Upvotes: 1

Related Questions