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 (Retired) Creating the MVP For Each Loop

Jarren Bess
Jarren Bess
985 Points

for each loops

I dont understand what they are asking for in this problem

ScrabblePlayer.java
public class ScrabblePlayer {
  private String mHand;

  public ScrabblePlayer() {
    mHand = "";
  }

  public String getTileCount () {
    String progress = "";
    for (char letter : mHand.toCharArray()) {

    }
  }


  public String getHand() {
   return mHand;
  }

  public void addTile(char tile) {
    // Adds the tile to the hand of the player
    mHand += tile;
  }

  public boolean hasTile(char tile) {
   return mHand.indexOf(tile) > -1;
  }
}
Jarren Bess
Jarren Bess
985 Points

So back to that ScrabblePlayer. I found that it's not enough to know if they just have a tile of a specific character. We need to know how many they actually have. Can you please add a method called getTileCount that uses the for each loop you just learned to loop through the characters and increment a counter if it matches? Return the count, please, thanks!

Jarren Bess
Jarren Bess
985 Points

thanks that helped :)

Brandon Adams
Brandon Adams
10,325 Points

Cool, make sure you mark this question as answered so I can get a few points for helping you out, thanks.

2 Answers

Hi Brandon,

I think your return statement needs to move after the first of the closing braces. At the moment, it is inside the for loop so it will return out of the method on the first iteration. You want to return the value after the loop has concluded, outside of the loop's braces.

public int getTileCount (char tile) {    
  int counter = 0;
  for (char letter : mHand.toCharArray()) {
    if (letter == tile) {
      counter++;
    }
  } // return after this
  return counter;
}

Steve.

Brandon Adams
Brandon Adams
10,325 Points

Ah yep, you're right, good catch.

Brandon Adams
Brandon Adams
10,325 Points
public int getTileCount (char tile) {    
  int counter = 0;
  for (char letter : mHand.toCharArray()) {
    if (letter == tile) {
      counter++;
    }
  return counter;
  }
}

I think this is what you need, first you are returning an int not a String, and you will need a tile parameter, a counter, and a loop.