一个小问题,关于流的关闭和开启(求助)
我搞了一个下工具类,专门从键盘读取字符串,代码如下:public class KeyboardIO
{
//从键盘获取字符
public static String getString()
{
String s;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try
{
print("请输入字符");
s = br.readLine();
return s;
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
try
{
br.close();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
我顺便也写了个获取数字的方法
//获取数字
public static int getInteger()
{
int time = 3;
while(time-- > 0)
{
String s = getString();
if(s.matches("\\d+"))
return Integer.parseInt(s);
else
{
print("输入非法字符,请重新输入");
print("您还有" + time + "次机会没," + "请重新输入");
}
}
print("错误次数超过限制,获得数字失败");
return -1;
}
不过问题来了,我发现如果第一个读取字符串的方法不能读第二次,只能读一次,这是为什么呢?(会提示流已经被关闭了的异常)
虽然退出方法之前流被关闭了,但是第二次执行方法时,执行了new语句,应该会重新开启的啊,难道不是这样么?