2016-10-02 111 views
0

我有這個hangman程序,但在詢問用戶他們是否想要再次玩時有問題,它總是隻是結束程序。我該如何解決這個問題。感謝未來的答覆。包裹hang子手 。我希望編輯是可以的使用if語句的循環問題

import java.io.File; import java.io.FileNotFoundException;

import java.util.Scanner;

public class Hangman { 

static Scanner keyboard = new Scanner(System.in); 
static int size, size2; 
static boolean play = false; 
static String word; 
static String[] ARRAY = new String[0]; 
static String ANSI_RESET = "\u001B[0m"; 
static String ANSI_BLUE = "\u001B[34m"; 
static String ANSI_GREEN = "\u001B[32m"; 
static String ANSI_RED = "\u001B[31m"; 
static String ANSI_LIGHTBLUE = "\u001B[36m"; 
//^declarations for variables and colors for display^ 

public static void main(String[] args) { 

    randomWordPicking(); 
    //^calls method^ 
} 

public static void setUpGame() { 

    System.err.printf("Welcome to hangman.\n"); 

    try { 

     Scanner scFile = new Scanner(new File("H:\\HangMan\\src\\hangman\\HangMan.txt")); 
     String line; 
     while (scFile.hasNext()) { 
      line = scFile.nextLine(); 
      Scanner scLine = new Scanner(line); 
      size++; 
     } 
     ARRAY = new String[size]; 
     Scanner scFile1 = new Scanner(new File("H:\\HangMan\\src\\hangman\\HangMan.txt")); 
     while (scFile1.hasNext()) { 
      String getWord; 
      line = scFile1.nextLine(); 
      Scanner scLine = new Scanner(line); 
      word = scLine.next(); 
      ARRAY[size2] = word; 
      size2++; 
    //calls method for picking word^ 
     } 
    } catch (FileNotFoundException e) { 
     System.out.println(e); 
    } 
} 

public static void randomWordPicking() { 


    setUpGame(); 

    int LEFT = 6; 

    do { 

     int random = (int) (Math.random() * ARRAY.length); 

     //^genertates a random number^ 


     String randomWord = ARRAY[random]; 
     String word = randomWord; 

     //^chosses a random word and asgins it to a variable^ 

     char[] ranWord = randomWord.toCharArray(); 

     char[] dash = word.toCharArray(); 

     //^Creates a char array for the random word chosen and for the dashs which are displayed^ 



     for (int i = 0; i < dash.length; i++) { 
      dash[i] = '-'; 

      System.out.print(dash[i]); 

      //^displays dashs to the user^ 
     } 

     for (int A = 1; A <= dash.length;) { 

      System.out.print(ANSI_BLUE + "\nGuess a Letter: " + ANSI_RESET); 
      String userletters = keyboard.next(); 

      //^gets user input^ 

      if (!userletters.equalsIgnoreCase(randomWord)) { 

       //^allows program to enter loop if user has entered a letter^ 
       for (int i = 0; i < userletters.length(); i++) { 

        char userLetter = userletters.charAt(i); 

        String T = Character.toString(userLetter); 

        for (int B = 0; B < ranWord.length; B++) { 

         //^converts users input to a char and to a string^  
         if (userLetter == dash[B]) { 

          System.err.println("This " + userLetter + "' letter already exist"); 
          B++; 
          //^tells user if the letter they entered already exists^ 
          if (userLetter == dash[B - 1]) { 
           break; 
          } 
         } else if (userLetter == ranWord[B]) { 
          dash[B] = userLetter; 
          A--; 
         } 
        } 
        if (!(new String(ranWord).contains(T))) { 
         LEFT--; 
         System.out.println("You did not guess a correct letter, you have " + LEFT + " OF " 
           + dash.length + " trys left to guess correctly"); 
        } 
        //^shows how many trys the user has left to get the word right before game ends^ 
        System.out.println(dash); 
        if (LEFT == 0) { 
         System.out.println("The word you had to guess was " + word); 
         break; 
        } 
        //^shows the user the word if they didnt guess correctly^ 
       } 
      } else { 
       System.out.println(ANSI_GREEN + "\nYou have guessed the word correctly!" + ANSI_RESET); 
       break; 
      } 
      if (LEFT == 0) { 
       break; 
      } 
      if ((new String(word)).equals(new String(dash))) { 
      System.out.println(ANSI_GREEN + "\nYou have guessed the word correctly!" + ANSI_RESET); 
       break; 
      } 
     } 
    //^if user enters the word it will check and then display that they got the word correct^ 
     System.out.println("Play agian? (y/n)"); 
     String name = keyboard.next(); 
     //^asks user if they want to play again^ 
     if (name.equalsIgnoreCase("n")) { 
      play = true; 
      return; 
     } 

     //^stops program if user enters n to stop game^ 
    } while (play = false); 

} 

}

+0

據我瞭解,你要調用方法'playOn()'。然而,我不知道你在哪裏叫它。 – AlexR

+0

@AlexR我把方法中的代碼放到了它應該在的地方 –

回答

1

,您應該使用的

while (!play) 

代替

while (play = false) 
+0

非常感謝你的工作!! :) –

1

如果要比較兩個變量,不要使用=運營商,這意味着分配。改爲使用==。此外,你的情況應該是!=

while (play != false)