我正在学习Java,我写了一个方法来更新文件中的记录。我遇到的问题是,当我询问用户是否要查找另一个文件时,我的阅读器已关闭或无法为其分配任何输入。
protected boolean Update() throws InputMismatchException
{
RoomService Init =new RoomService();
Scanner input = new Scanner(System.in);
try {
boolean ans= true;
while(ans)
{
System.out.println("Please enter room number.");
String id = input.next();
Init.Update(id);
System.out.println("Press Enter to Add more or no to exit");
String choice = input.nextLine();// Skips this line
if (choice.equalsIgnoreCase(""))
{
continue;
}
else if(choice.equalsIgnoreCase("no"))
{
ans= false;
}
else
{
System.err.println("Wrong input");
throw new IOException();
}
}
} catch (IOException e) {
e.printStackTrace();
fail=true;
}
return fail;
}
想知道究竟是什么阻止我输入任何我使用过的BufferedReader input = new BufferedReader(new InputStreamReader (System.in))
感谢。
编辑:
使用扫描程序错误是:java.util.NoSuchElementException
使用BufferedReader错误是:java.io.IOException:Stream closed
答案 0 :(得分:1)
如果您的代码中还有其他地方,您使用的是Scanner
System.in
,请确保不要在其上调用close()
。 Scanner
本身没有需要关闭的资源,除非你想要关闭基础输入源,Scanner
缠绕System.in
,你不要这样做,因为这会阻止所有未来的输入。