我正在学习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的页面。
有任何线索吗?如果需要,我可以修改我的问题。
答案 0 :(得分:2)
关闭此行中的Scanner
:
input.close();
也会关闭System.in
。因此,下次您从同一台扫描仪读取时,您将收到此错误。