Java Java Objects Creating the MVP Current Progress

Chase Anzalone
Chase Anzalone
2,871 Points

program displays actual string instead of dashes

probably some small error, but i can't find why the program reveals the string to be guessed instead of dashes and current progress.

class Game {

private String answer; private String hits; private String misses;

public Game (String answer) { this.answer = answer; hits = ""; misses = ""; }

public boolean applyGuess(char letter) { boolean isHit = answer.indexOf(letter) != -1; if(isHit) { hits += letter;

}
else
{
  misses += letter;
}
return isHit;

}

public String getCurrentProgress() { String progress = ""; for(char letter : answer.toCharArray()) { char display = '-'; if(hits.indexOf(letter) != -1); { display = letter; } progress += display;

}
     return progress;

}

}

///////////////////////////////////////////////////////////////////////// import java.util.Scanner; class Prompter {

private Game game;

public Prompter(Game game) { this.game = game;

}

public boolean promptForGuess() { Scanner scanner = new Scanner(System.in); System.out.print("Enter a Letter: "); String guessInput = scanner.nextLine(); char guess = guessInput.charAt(0); return game.applyGuess(guess); }

public void displayProgress() { System.out.printf("Try to solve : %s%n",game.getCurrentProgress()); } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// public class Hangman {

public static void main(String[] args) { Game game = new Game("treehouse"); Prompter prompter = new Prompter(game); prompter.displayProgress(); boolean isHit = prompter.promptForGuess(); if(isHit) { System.out.println("We Got a Hit!"); } else { System.out.println("Oops! missed"); } prompter.displayProgress(); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// Picked up JAVA_TOOL_OPTIONS: -Xmx128m
Picked up _JAVA_OPTIONS: -Xmx128m
Picked up JAVA_TOOL_OPTIONS: -Xmx128m
Picked up _JAVA_OPTIONS: -Xmx128m
Try to solve : treehouse
Enter a Letter:

Chase Anzalone
Chase Anzalone
2,871 Points

Sorry about the weird formatting

1 Answer

In Game.java in getCurrentProgress() you have a semicolon that ends your if statement

if(hits.indexOf(letter) != -1); 

therefore the code following display = letter always executes. Remove the semicolon.

Chase Anzalone
Chase Anzalone
2,871 Points

wow i can't believe i didn't notice that lmao thanks man