标题:一个小问题,关于流的关闭和开启(求助)
取消只看楼主
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
结帖率:88.89%
已结贴  问题点数:20 回复次数:2 
一个小问题,关于流的关闭和开启(求助)
我搞了一个下工具类,专门从键盘读取字符串,代码如下:
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语句,应该会重新开启的啊,难道不是这样么?
搜索更多相关主题的帖子: public return 字符串 键盘 
2013-08-28 11:26
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
得分:0 
回复 2楼 ren829
while(time-- > 0)
        {
            String s = getString();
            if(s.matches("\\d+"))
                return Integer.parseInt(s);
            else
            {
                print("输入非法字符,请重新输入");
                print("您还有" + time + "次机会没," + "请重新输入");
            }
        }
这里不是有个循环么,失败了会继续循环调用啊getString()啊
而且我调试的时候看到执行过new啊,咋还是提示关闭呢
2013-08-29 01:08
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
得分:0 
莫有人指教下么
2013-08-30 22:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419753-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060470 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved