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 trialJoshua Salas
732 PointsThink im answering the question says i have a syntax error
Think im answering the question says i have a syntax error
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
}
}
// 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
Treehouse TeacherHi 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 tile
which was sent in.
Hope this helps, but let me know if you have further questions!