黑马程序员技术交流社区
标题:
BufferedReader的readLine()方法为什么不会结束?
[打印本页]
作者:
李大强
时间:
2013-2-7 17:48
标题:
BufferedReader的readLine()方法为什么不会结束?
本帖最后由 李大强 于 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();
}
}
作者:
胡发友
时间:
2013-2-7 17:57
同学,你没有家结束标记;
应该在循环中加上结束标记
while((line = bufr.readLine()) != null){
if("over".equals(line))
break;
System.out.println(line);
}
作者:
pzfpang449
时间:
2013-2-7 19:39
本帖最后由 庞在飞 于 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"标志。也是不错的。
希望对楼主有所帮助
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2