Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Java Objects Creating the MVP Scrabble Tiles

Jiho Song
Jiho Song
16,469 Points

where is wrong? Java scrabble player..

where should i correct? i thought that i was following the exactly same method with the lecture..

how should i do :(

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
  this.tiles += tiles + tile;
  }

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

    return false;

  }

}

the code is syntactically correct. what error are you seeing? is it a logic error?

The question specifically requests that the answer is provided by returning the result of an expression, not by using an if statement. The error is: Bummer! While you could definitely solve this using an if statement, try returning the result of the expression.

1 Answer

Hi there,

For this part of the question you want to check is tile is contained within tiles. You've correctly used the indexOf() method. What you want to test, is whether the indexOf(tile) is greater than or equal to zero; that means that the tile is within tiles. If tile is not in there, the result is -1 which isn't greater than zero. Return the result of that method call.

Something like:

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

Make sense

Steve.

Jiho Song
Jiho Song
16,469 Points

thank you so much. i feel like what have i done haha

Glad to help! :+1:

Also, your solution to the first part of that task could be simplified.

You have:

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

... but all you need to do is add the tile to the tiles string:

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

:wink: :smile: