当前位置: 首页 > 面试题库 >

Java 关闭链接到System.in的扫描仪

卢德惠
2023-03-14
问题内容

我有一个Scanner链接到System.in。现在,使用之后Scanner,我应该将其关闭,因为将其保持打开状态是不好的编码习惯。但是,如果我关闭Scanner,我也将关闭System.in!谁能告诉我如何关闭Scanner而不关闭System.in(如果有的话)。


问题答案:

一种选择是将System.in流包装为CloseShieldInputStream,以防止流被关闭。然后,你的读者将使用CloseShieldInputStream而不是原始System.in流。



 类似资料:
  • 我有一个链接到中。现在,在使用了

  • 问题内容: 我试图将我的应用程序中较大且经常使用的部分重构为单独的方法,以使其易于维护。 其中一些方法要求用户输入并进行输入验证,因此我使用了Scanner和System.in,但是当我关闭Scanner时,我也关闭了System.in。 所以我的问题是,我只能通过用CloseShieldInputStream屏蔽System.in来防止System.in关闭,还是应该开始将Scanner传递给方

  • 我试图将应用程序中大量且经常使用的部分重新划分为不同的方法,以使其更容易维护。 其中一些方法要求用户输入并进行输入验证,因此我使用了扫描仪和系统。但当我关闭扫描仪时,我也会关闭系统。在里面 所以我的问题是,我只能阻止系统。通过使用CloseShieldInputStream屏蔽它来关闭,还是我应该开始向方法传递一个扫描器?

  • e、 (g) 此扫描仪工作不正常。但在删除close()后,它可以正常工作。 我想原因是“ystem.in”有问题。 请给我答案。 非常感谢。 )首先在a()中调用input.nextLine(),然后在b()中调用scan.nextInt()。我有错误,如NoSuchElementExcema。

  • < b >想改进这个问题?更新问题,以便通过编辑此帖子用事实和引用来回答问题。 我知道使用nextInt()方法不会消耗新行字符,所以为了处理这个问题,我需要使用一个空的nextLine()方法继续。 我的问题是,作为一种替代解决方案,程序是否会对任何类型的运行时错误开放以使用两个扫描仪,一个用于字符串输入,一个用于整数? 感谢您的任何帮助! (经过编辑,因此问题不那么主观)

  • 当我尝试使用javac在windows命令提示符中编译程序时,我得到以下错误消息: 我做错了什么?