Mac上Java 20.0.1使用Scanner重定向标准输入异常原因咨询
故障原因分析:Scanner重定向输入抛出NoSuchElementException
核心原因:Scanner自动关闭标准输入流
- 每次调用
getUserName()都会创建新的Scanner实例关联System.in。 - 第一次调用结束后,该Scanner对象失去引用,触发垃圾回收时,Scanner的
finalize()方法会自动关闭它绑定的System.in流。 - 第二次调用
getUserName()时,新Scanner尝试从已关闭的System.in读取数据,因无数据可读抛出java.util.NoSuchElementException: No line found异常。
是否存在其他可能?
在当前场景下没有其他主要触发原因:输入文件names.txt包含两行内容,与代码中两次读取的逻辑匹配;编译和运行命令也无错误,唯一问题就是Scanner自动关闭了标准输入流。
内容的提问来源于stack exchange,提问作者Siva
相关产品推荐
相关产品推荐

