Java Java Objects Creating the MVP Counting Scrabble Tiles

Mark Harrigan
Mark Harrigan
7,214 Points

My for loop keeps throwing a bad initialiser error?

I'll admit, I am a bit lost with this challenge.

Having re-watched the progress video, I think that line 23 should say for (char letter : tiles.toCharArray()) etc.

However when I use that, I get an error that says that char letter has already been declared? But when I remove char from line 23, I get an error saying I have a bad initialiser?

I'm also a bit lost as in the progress video there was an answer key to compare to, wheres this challenge I believe it is a matter of creating code to check letters that will be generated from the 'scrabble bag'?

Any insight would be appreciated.

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 (letter : tiles.toCharArray()) {
      if(tiles.indexOf(letter) != -1) {
        count++;
      }
      return count;
    }
  }
}
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

public int getCountOfLetter(char letter) { int count = 0; for (letter : tiles.toCharArray()) { if(tiles.indexOf(letter) != -1) { count++; } return count;

should be: public int getCountOfLetter(char letter) { int count = 0; for(char newTiles : tiles.toCharArray()) { if(letter == newTiles) { count++; } return count; }