Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与正在关闭的流相关的奇数错误_Java_Input_Stream_Java.util.scanner_Bufferedreader - Fatal编程技术网

Java 与正在关闭的流相关的奇数错误

Java 与正在关闭的流相关的奇数错误,java,input,stream,java.util.scanner,bufferedreader,Java,Input,Stream,Java.util.scanner,Bufferedreader,我正在学习Java,我编写了一个方法来更新文件中的记录。我遇到的问题是,当我询问用户是否希望查找另一个文件时,我的阅读器已关闭或无法为其分配任何输入 protected boolean Update() throws InputMismatchException { RoomService Init =new RoomService(); Scanner input = new Scanner(System.in); try { bool

我正在学习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

如果您的代码中还有其他地方,您正在使用围绕
系统的
扫描仪
。在
中,请确保您没有对其调用
close()
Scanner
本身没有需要关闭的资源,除非您想关闭底层输入源,这对于围绕
系统的
Scanner
来说是不需要的。在
中,您没有,因为这会阻止以后的所有输入。

我没有,因为我使用我的视图和添加函数,它们在循环时都接受输入,这就是这个更新方法。不确定是否有其他东西正在关闭它,可能是因为我对Streams有更多的了解。请尝试运行
Update
方法。如果它不再抛出异常,您就知道问题在于代码的某个部分正在关闭
System.in
。然后一次将部分代码放回一个中,以确定是哪个部分在执行此操作。假设是这种情况,但我不确定,当您从try catch资源中的函数返回时,它是否仍会关闭资源(例如,
try(Scanner input=new Scanner(System.in)){…}
)退出
try
块时关闭资源。这就是重点。没有自己关闭任何东西。发现它是什么显然我有一个抑制警告,因此我没有看到资源泄漏。您得到的确切错误消息是什么?