2013-02-07 124 views
0

我必须使用扫描仪方法在java中制作游戏hang子手。我收到以下错误后,我输入的刽子手字:与扫描仪游戏的Java扫描仪错误

Exception in thread "main" java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at Hangman.main(Hangman.java:33) 

我一直在寻找了一段时间,似乎无法找到任何毛病。有什么建议?

//import javax.swing.*; 
import java.util.*; 

public class Hangman { 

    /** 
    * @param args 
    */ 

    public static void main(String[] args) { 
     boolean gameOver, win; 
     gameOver = false; 
     win = false;  
     int correctCount = 0; 
     int incorrectCount = 0; 

     // TODO Auto-generated method stub 

     String hangmanWord; 
     System.out.println("Enter a word for hangman "); 
     Scanner scanner; 
     scanner = new Scanner(System.in); 
     hangmanWord = scanner.next(); 
     scanner.close(); 
     int hangmanLength = hangmanWord.length(); 

     while (incorrectCount<8){ 
      String guessedLetter; 
      System.out.println("Now take a letter guess "); 
      Scanner scanner1; 
      scanner1 = new Scanner(System.in); 

      guessedLetter = scanner1.next(); 
      scanner1.close(); 
      char guessedLetterSolo = guessedLetter.charAt(0);     
      int count = 1; 
      int i = 0; 
      //int y = 0; 
      boolean oneIsCorrect = false; 
      String alphabet; 
      alphabet = new String(); 

      //System.out.println("Length: " + hangmanLength); 
      while(count<hangmanLength + 1){ 
       //System.out.println("Count: " + count); 
       char hangmanLetter = hangmanWord.charAt(i); 

       if (guessedLetterSolo == hangmanLetter && alphabet.indexOf(guessedLetterSolo) == -1){     

        correctCount++; 
        oneIsCorrect = true;      
        //y++; 
        alphabet = alphabet + guessedLetterSolo; 
        //System.out.println(alphabet); 

       } 
       count++; 
       i++; 
       if (correctCount == hangmanWord.length()){ 
        win = true; 
       } 

      } 
      //System.out.println("CorrectCount: " + correctCount); 

      if (oneIsCorrect){ 
       System.out.println("Correct guess, the word contains the letter " + guessedLetterSolo); 
      } 
      if (!oneIsCorrect){ 
       incorrectCount++;     
       System.out.println("Incorrect guess"); 
      } 

      //if (correctCount == hangmanWord.length()){ 
       //win = true; 
      //} 
      if (incorrectCount == 8){ 
       gameOver = true; 
      } 
      if (gameOver || win) { 
       break; 
      } 

     } 
     if(gameOver){ 
      System.out.println("Game over"); 
     } 

     if(win){ 
      System.out.println("You win"); 
     } 

    } 
} 

回答

0

变化

guessedLetter = scanner1.next();

guessedLetter = scanner1.nextLine();

2

使用Scanner#nextLine()得到用户的下一行输入。此外,您每循环创建一个新的扫描仪。不要这样做,只是不要关闭scanner并在while循环中使用它。