猜一个字(Java)

时间:2014-12-21 22:26:38

标签: java netbeans

您好我必须创建一个程序,让玩家猜一个单词。我的代码工作得很好,但我必须写一个允许玩家7尝试的条件,如果玩家在7日没有猜到这个单词,他/她就会失败。我不知道怎么写这个条件。这是我的代码:

package javaapplication5;

import java.io.*;
import java.lang.*;
import java.util.*;

public class NewClass2{  



 public static int ReadWordsFromFile(String[] words)
  {
        try
        {
              FileReader fr = new FileReader("Guess_words.txt");
              BufferedReader br = new BufferedReader(fr);
              int count = 0;
              for (int i = 0; i <87; i++)
              {
                    String s = br.readLine();
                    if (s == null)
                          break;
                    words[count++] = s;
              }
              fr.close();
              return count;
        }
        catch (FileNotFoundException e)
        {
              System.out.println(e.getMessage());
              return -1;
        }
        catch (IOException err)
        {
              System.out.println(err.getStackTrace());
              return -1;
        }
  }

  static public String ReadString()
  {
        try
        {
              String inpString = "";
              InputStreamReader input = new InputStreamReader(System.in);
              BufferedReader reader = new BufferedReader(input);
              return reader.readLine();
        }
        catch (Exception e)
        {
              e.printStackTrace();
        }
        return "";
  }

  public static void main(String[] args)
  {
        System.out.println("Welcome to Guess a Word\n");

        String[] words = new String[87];

        int count = ReadWordsFromFile(words);
        if (count < 0)
        {
              System.out.println("No words found in the file");
              return;
        }

        if (words == null)
              return; // Exception message was already shown
        int x = (int)(Math.random() * 87);
        int guessX = (x % count);

        String secretWord = words[guessX];

        int numChars = secretWord.length();

        System.out.print("Your secret word is: ");
        for(int i = 0; i < numChars; i++)
              System.out.print("*");
        System.out.println();

        boolean bGuessedCorrectly = false;

        System.out.println("Guess now  (To stop the program, enter #) : ");

        while (true)
        {
              String choice = ReadString();

              if (choice.startsWith("#"))
                    break;

              if (choice.compareTo(secretWord) == 0)
              {
                    bGuessedCorrectly = true;
                    break;
              }
              for (int i = 0; i < numChars; i++)
              {
                    if (i < secretWord.length() &&
                          i < choice.length())
                    {
                          if (secretWord.charAt(i) == choice.charAt(i))
                                System.out.print(choice.charAt(i));
                          else
                                System.out.print("*");
                    }
                    else
                          System.out.print("*");
              }
              System.out.println();

        }

        if (bGuessedCorrectly == false)
              System.out.println("Unfortunately you did not guess it correctly. The secret word           is: " + secretWord);
        else
              System.out.println("Congrats! You have guessed it correctly");         
  }
} 

1 个答案:

答案 0 :(得分:0)

为什么不简单地改变你的循环:

while (true) {
}

对此:

for (int nrOfGuesses = 0; nrOfGuesses < 7; nrOfGuesses++) {
    // do stuff
}