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

Counting scrabble tiles. Help needed.

help needed for the last step

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 letter)
  {
    int abc = 0;
    for (int letter : tiles.toIntArray()){
      if (tiles.indexOf(letter) != -1)
         {
        abc += letter;
      }
    }
    return abc;

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

michaelcodes
michaelcodes
5,604 Points

Hi there! So a couple of things that I noticed. In your for loop you have declared an integer here and used a different method.

For this we want to check directly each individual letter in the string called "tiles" So for each variable "tile" inside of the tiles String as a character array.

    for (char tile : tiles.toCharArray()) {

So the variable "tile" is going to represent each individual letter in the character array. This means we can just check if the tile is equal to the letter character being passed into our argument.

    if (tile == letter) {

For this challenge they specifically want you to use the ++ shorthand to increment the variable (same as abc += 1; or abc = abc + 1;)

      if (tile == letter) {
        abc++;
      }

Put all of this together and you get:

*note the comments I added to show how each part is working together

  public int getCountOfLetter (char letter) { //Giving us a single Char variable named "letter"
    int abc = 0;
    for (char tile : tiles.toCharArray()) { //"tile" will represent each individual letter in the "tiles" String
      if (tile == letter) { //check if the letter we were passed from the method is equal to the letter
        abc++;//add 1 to our counter if so
      }
    }
    return abc;
  }

I hope this helps! take care and happy coding!

Thanks Raffael It works..!!