Java Scanner抛出NoSuchElementException

时间:2014-01-29 04:53:44

标签: java java.util.scanner

我正在学习Java,通过这样做,我写了一个简单的猜谜游戏。现在我试图通过添加其他功能来改进它,但我坚持尝试使它更“模块化”,即:使用更多方法与长main()方法。

我有这个:

while(!guessed) {
    System.out.println("Guess a number between 1 and 1000.");
    guessedNum = Integer.parseInt(input.nextLine());
    numCheck(guessedNum);
}
timeEnd = System.currentTimeMillis();
input.close();
System.out.println("Seconds to guess: " + (timeEnd - timeStart)/1000);

哪个工作得很好,但是如果我尝试为这个“猜数”做一个单独的方法:

public static int guessNum() {
    System.out.println("Escriba un numero entre 1 y 1000.");
    Scanner input = new Scanner(System.in);
    guessedNum = Integer.parseInt(input.nextLine());
    input.close();
    return guessedNum;
}

它会抛出以下错误:

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Unknown Source)
    at game.Guess.guessNum(Guess.java:40)
    at game.Guess.start(Guess.java:28)
    at game.Game.main(Game.java:21)

我一直在尝试使用分隔符和nextLine(),但它始终是相同的错误。此外,我已经尝试使用eclipse进行调试,但是当它转到nextLine时,它会跳转到一个显示Source not found的页面。

有任何线索吗?如果需要,我可以修改我的问题。

1 个答案:

答案 0 :(得分:2)

关闭此行中的Scanner

input.close();

也会关闭System.in。因此,下次您从同一台扫描仪读取时,您将收到此错误。