title: Java Hangman program
body: <p><strong>I need help figuring out the following errors in my code: replacing the correct
  letters the user inputs in the mystery word. My last method's function is to do this but
  I cannot figure out why it will only input a single correct letter and not all of the correct guesses. Also the maximum number of tries the user has is 8 but when I compile my program the number of tries will go into the negatives and I cannot figure out what is wrong with my maximum tries loops.</strong> Thank you in advance! I really appreciate this. **Also using several methods in this program is a requirement for my assignment!</p>
  
  <pre><code>import java.util.*;
  import java.io.*;
  
       public class Hangman {
   public static Scanner keyboard; 
   public static final int MAXSIZE = 15000;
   public static final int NUM_GUESS = 8; 
   public static final int WORD_LENGTH = 20; 
   public static void main(String[] args) {
   keyboard = new Scanner(System.in); 
   int random = pickrandom(MAXSIZE); 
  
      try {
          // Set up connection to the input file
          Scanner input = new Scanner(new FileReader("dictionary.txt"));
          String [] dictionaryWords = new String [MAXSIZE];
          int usedsize = 0;
          while ( usedsize &lt; MAXSIZE &amp;&amp; input.hasNextLine() ){
              dictionaryWords [usedsize] = input.nextLine();
              usedsize ++; 
              }
          System.out
          .println("              H A N G M A N. " +
                  "\n This is a word guessing game. " +
                  "\n A word will be selected at random and kept hidden. You will try to figure out the secret word by" +
                  "\n guessing letters which you think are in the word. " +
                  "\n You will guess one letter at a time. " +
                  "\n If the letter you guess is correct, the position(s) of the letter in the secret word will be shown. " +
                  "\n You will be allowed " + NUM_GUESS + " wrong guesses  If you guess incorrectly " + NUM_GUESS+ " times, you lose the game. " +
                  "\n If you guess all of the letters in the word, you win." +
                  "\n\n Press enter to continue ");
          keyboard.nextLine(); 
          clearScreen();
          String word = dictionaryWords[random];
  
          System.out.println(dictionaryWords[random]);
          String blank = blankWord(word);
  
          String decision; 
          //decision = keyboard.nextLine().toUpperCase();
          System.out.println("Word to guess :");
          System.out.println(blank);
          int tries = NUM_GUESS; 
  
          System.out.println("Enter a letter to guess or 9 to quit");
          String guess = keyboard.next();
          do{
  
               //System.out.println(tries); 
          while (!guess.equals("9") || !(guess.equals(word)  &amp;&amp; tries &gt;0))
                  {
                  char letter = guess.charAt(0); 
                  String guesses = "";
                  guesses += letter;
                  if (word.indexOf(letter) &lt; 0) {
                      tries--;
                      System.out.println("Incorrect letters tried: " + guess);
                      System.out.println("Number of guesses left: " + tries);
                      System.out.println("Enter a letter to guess or 9 to quit");
                      guess = keyboard.next();
                  }
                  else {
                      String correctWord = correctWord( guess,  word,  blank, letter );
                      System.out.println(correctWord); 
                      System.out.println("Enter a letter to guess or 9 to quit");
                      tries--;
                      System.out.println("Number of guesses left: " + tries);
                      guess = keyboard.next();
                      tries--;
                      System.out.println("Number of guesses left: " + tries);
                  }
  
  
  
  
  
  
  
  
  
  
  
  
              }
          if (guess.equals("9")){
              System.out.println("Thanks for playing");
  
          }
          if ( guess.equals(word)){
              System.out.println("You won!");
          }
          if( tries == 0){
              System.out.println("You have no more guesses left"); 
          }
          System.out.println("Play again? Y/N");
          decision = keyboard.nextLine().toUpperCase();
  
          } while (decision.equals("Y"));
          //System.out.println("Play again? Y/N");
          //decision = keyboard.nextLine().toUpperCase();
      }
      catch (FileNotFoundException e) {
          System.out.println("There was an error opening one of the files.");
      }
  
  
  }
  //Clears screen after introduction 
  private static void clearScreen (){
      for (int blanks = 0; blanks &lt; 80; blanks++) {
          System.out.println();
      }
  }
  
  // This method returns a randomly selected integer
  // between 0 and count-1
  public static int pickrandom(int count) {
      Random generator = new Random();
      return generator.nextInt(count);
  }
  
  // Places asterisks in place of the letters in the word
  // Parameter is the string word. it holds mystery word
  
  public static String blankWord(String word) {
      String blank = "";
  
      for (int i = 0; i &lt; word.length(); i++) {
  
          blank += " * ";
      }
      return blank;
  }
  //Replaces asterisks with correct guess 
       public static void fillWord(String blank,String word, char letter ){
  for ( int i = 0; i &lt;word.length() ; i++){
      if(word.charAt(i) == letter){
          blank.charAt( i ); 
  
      }
  
  }
    }
    //Receives correct guesses and replaces the asterisks with correct letter 
    //Parameters is  the mystery word 
      public static String newWord (String word){
   String newWord  = "";
   if (newWord.length() &gt; 0){
       newWord += word.charAt(0);
       for (int i = 1; i &lt;word.length(); i ++){
           newWord += word.charAt(0);
       }
  
   }
  return newWord;  
    }
    //Counts the number of missed guesses and replaces total count
    //Parameters are the mystery word and the letter guesses from user 
    public static boolean alreadyGuessed(String word, String guess){
   for (int i = 0 ; i&lt; word.length() ; i++){
       if (word.charAt(i)== guess.charAt(0)){
           return true; 
       }
   }
   return false; 
       }
           //Compares to see if the letter has already been guessed
        //Parameters are the mystery word and the user's guess 
        public static boolean letterGuessed(String word, String guess){
       for (int i = 0 ; i&lt; word.length(); i++){
       if (word.charAt(i) == guess.charAt(0)){
           return true;
       }
   }
   return false; 
      }
     //Replaces correct guess in blanks 
       public static String correctWord(String guess, String word, String blank, char letter){ 
  
      for (int i = 0; i &lt; word.length(); i++) {
  
           if (letter == word.charAt(i)){
               if (i &gt;0){
           blank = blank.substring (0, i) + letter + blank.substring(i +1);
               }
               if (i ==0){
                   blank = letter + blank.substring(1); 
               }
  
           }
      }
      return blank;
  }
  
  
  
  }
  </code></pre>