Java Java Objects Creating the MVP Scrabble Tiles

Clara Stancu
Clara Stancu
5,687 Points

Don't understand the "bummer"

In the statement it says: "to return true if the tile is in the tiles field, and false if it isn't." I did exactly that: return true ... return false. But the bummer says he wants the result if the expression; and if instead of "return true" i put "return isTile", the "bummer" says exactly the same thing. To what expression does it refer ?

ScrabblePlayer.java
public class ScrabblePlayer {
  // A String representing all of the tiles that this player has
  private String tiles;

  public ScrabblePlayer() {
    tiles = "";
  }

  public String getTiles() {
    return tiles;
  }

  public void addTile(char tile) {
    // TODO: Add the tile to tiles
      tiles += tile;
  }

  public boolean hasTile(char tile) {
    // TODO: Determine if user has the tile passed in
    boolean isTile = tiles.indexOf(tiles) != -1;
    if (isTile) return true ;
    return false;
  }

}

1 Answer

Jonathan Grieve
MOD
Jonathan Grieve
Treehouse Moderator 86,643 Points

The code is challenging you to work out a way of passing without using an if statement but instead returning the result of the expression in hasTile()

  public boolean hasTile(char tile) {
    // TODO: Determine if user has the tile passed in
    return tiles.indexOf(tile) >= 0;
  }

This works because you're passing an expression to the return keyword, which only ever evaluates to true or false. Sionce the expression checks for greater than zero it will be a "truthy" value so returns true. In every ever instance (i.e. a retuen of less than zero the return value will be false.

Hope this helps! :)