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

Enyang Mercy
PLUS
Enyang Mercy
Courses Plus Student 2,339 Points

Help!! please check the last method . why are having char c?

Someone helped me with the code but i need lil explanations. I cant find c in my method or challenge yet we have char c. Why? why do we have return count instead of a number we are asked to return? Thank you for helping

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 count = 0;
    for(char c: this.tiles.to.CharArray() )
    {
      if(c == letter) {
        count++;
      }
    }
    return 0;
  }

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

2 Answers

michaelcodes
michaelcodes
5,604 Points

Hi there! so to answer your first question about the char variable "c", the variable itself is being declared right there in the for loop. The way that it works is that that variable "c" is going to assume the value of each individual letter in the tiles string.

So say for example that the tiles string contained "abcde". Now in the for loop, the variable "c" is going to assume the value of "a" the first time through, then the second time "b", and then "c", and so forth til it reaches the end.

We then compare that c value to the letter that was passed down to us through the method parameter (letter). We compare "c" each time through the loop to see if it matches, if it does then we add 1 to our counter variable and continue on.

The reason we return the "count" variable at the end is because that represents the total number of tiles that matched our passed in letter. I noticed that in the code there was an error with the toCharArray() method and missing a return statement. I have fixed those below as shown:

  public int getCountOfLetter(char letter) {
    int count = 0;
    for(char c: tiles.toCharArray() ) //before it said tiles.to.CharArray()
    {
      if(c == letter) {
        count++;
      }
    }
    return count; // it was also missing this return statement
  }

Hope this helped, If you have any other questions don't hesitate to ask! Take care and happy coding!