A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李大强 于 2013-2-12 10:37 编辑

写了一个程序用户获取用户的输入并打印在控制台上,当把用户的数据都打印完以后程序就退出,可是下面的程序
一直都不会结束!非要按Ctrl+C强制结束不可!


import java.io.*;

class  TransStreamDemo
{
        public static void main(String[] args) throws IOException
        {
               
                BufferedReader bufr =
                                new BufferedReader(new InputStreamReader(System.in));


                String line = null;

                while((line=bufr.readLine())!=null)//为什么此循环一直都不结束?
                {
                        System.out.println(line);
                }

                bufr.close();

        }
}

2 个回复

倒序浏览
同学,你没有家结束标记;
应该在循环中加上结束标记
while((line = bufr.readLine()) != null){
        if("over".equals(line))
              break;
        System.out.println(line);
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 庞在飞 于 2013-2-7 19:40 编辑

String line = null;

                while((line=bufr.readLine())!=null)//为什么此循环一直都不结束?
                {
                        System.out.println(line);
                }

                bufr.close();
楼主文帝是为什么此循环一直都不结束  
  这个很简单的,你可以看看Java Api上面说的说的很具体,readLine()是一个堵塞机制。
   阻塞着不向下运行,readLine()方法,它是一个阻塞式方法,只有读到了回车换行符后才能运行后面的代码!
    ctrl+c是强行退出线程。就类似咱的任务管理器,强制关闭某个线程。
最好的办法是给一个结束的标志,例如楼上说的加个"over"标志。也是不错的。

希望对楼主有所帮助

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马