gpt4 book ai didi

java - 在 Java 中多次读取 System.in 会导致 IOException?

转载 作者:搜寻专家 更新时间:2023-11-01 04:06:42 24 4
gpt4 key购买 nike

我正在尝试创建一个命令行小游戏来巩固我在过去几个月中在 Java 中学到的一些东西。

我正在尝试创建一个名为 readInput() 的方法,它返回一个字符串,我可以一次又一次地调用它。第一次它完美运行,但第二次它会导致 IO.Exception。如果我删除语句 bisr.close();它可以工作,但被教导要关闭流,因为让它们保持打开状态是不好的做法。

有人可以给我指出正确的方向吗,因为我用谷歌搜索但无济于事。

方法...

private String readInput()
{
String input = null;
BufferedReader bisr = null;
try
{
bisr = new BufferedReader(new InputStreamReader(System.in));
input = bisr.readLine();
}
catch (Exception e)
{
System.out.println("Error: " + e);
}
finally
{
try
{
bisr.close();
}
catch (Exception e)
{
System.out.println("Error:" + e);
}
return input;
}
}

最佳答案

问题是关闭 BufferedReader 也会自动关闭 InputStreamReader,这会隐式关闭 System.in

并且您第二次调用该方法时 System.in 已关闭,这意味着您将无法从中读取数据。

“始终关闭它”仅适用于您同时打开的资源!

关于java - 在 Java 中多次读取 System.in 会导致 IOException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com