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 Counting Scrabble Tiles

Joshua Salas
Joshua Salas
732 Points

Think im answering the question says i have a syntax error

Think im answering the question says i have a syntax error

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) {
    tiles += tile;
  }

  public boolean hasTile(char tile) {
    return tiles.indexOf(tile) != -1;
  }
  public int getCountOfLetter(char tile){
       int count = 0;         // create & init a counter
    for(char tile: tiles.toCharArray()){   // convert to array and create a local var & loop
      if(tile == letter){     // compare the char to tile
        count++;       // increment if equal
      }
    }
    return count;    // return the result

  }
}
Example.java
// This code is here for example purposes only
public class Example {

  public static void main(String[] args) {
    ScrabblePlayer player1 = new ScrabblePlayer();
    player1.addTile('d');
    player1.addTile('d');
    player1.addTile('p');
    player1.addTile('e');
    player1.addTile('l');
    player1.addTile('u');

    ScrabblePlayer player2 = new ScrabblePlayer();
    player2.addTile('z');
    player2.addTile('z');
    player2.addTile('y');
    player2.addTile('f');
    player2.addTile('u');
    player2.addTile('z');

    int count = 0;
    // This would set count to 1 because player1 has 1 'p' tile in her collection of tiles
    count = player1.getCountOfLetter('p');
    // This would set count to 2 because player1 has 2 'd'' tiles in her collection of tiles
    count = player1.getCountOfLetter('d');
    // This would set 0, because there isn't an 'a' tile in player1's tiles
    count = player1.getCountOfLetter('a');

    // This will return 3 because player2 has 3 'z' tiles in his collection of tiles
    count = player2.getCountOfLetter('z');
    // This will return 1 because player2 has 1 'f' tiles in his collection of tiles
    count = player2.getCountOfLetter('f');
  }
}

1 Answer

Jennifer Nordell
seal-mask
STAFF
.a{fill-rule:evenodd;}techdegree
Jennifer Nordell
Treehouse Teacher

Hi there! You're doing great, but you do have a syntax error. You are trying to use a variable that you never defined. The variable letter was never defined in your code. By contrast, tile was declared not once, but twice.

The parameter inside the function definition specifies that a piece of information will be sent in and assigned to the variable name tile. But then immediately afterwards you have written:

for(char tile: tiles.toCharArray())

This says that the for loop will have a variable named tile which represents each separate character in the character array. This is overwriting the original tile declaration. Then you try and compare it to letter which was never defined at all. But if I make one teensy change, the whole thing changes.

for(char letter: tiles.toCharArray())

This specifies a variable letter which will represent each individual character in the character array and then we compare it to the tilewhich was sent in.

Hope this helps, but let me know if you have further questions! :sparkles: