【发布时间】:2015-05-12 16:37:59
【问题描述】:
我想使用 BufferedReader 在控制台中键入多行文本,然后按“Enter”来查找整个文本长度的总和。问题是我似乎进入了一个无限循环,当我按下“Enter”时,程序并没有结束。我的代码如下:
InputStreamReader instream = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(instream);
line= buffer.readLine();
while (line!=null){
length = length + line.length();
line= buffer.readLine();
}
你能告诉我我做错了什么吗?
【问题讨论】:
-
当你只按回车时,
line将等于 "" 而不是 null。尝试将line != null更改为!line.equals("") -
另外,只是提供一些其他意见(例如使用 for 循环),codereview.stackexchange.com/questions/44135/…
-
昨晚睡着的时候突然意识到:你用长度干什么?请注意,如果您要执行 cat myfile | java yourprogram 并打印出长度的值,这将与什么不一致,例如wc 打印出来,因为你没有计算换行符。如果您需要这样做,请注意 DOS 文件将具有“\r\n”,而 UNIX 文件将具有“\n”,而我最初使用 System.getProperty("line.separator") 的建议可能不起作用,因为不能保证你不是例如试图在 Linux 下读取 DOS 文件。 (所以,希望这不是你的意思)
标签: java bufferedreader infinite-loop inputstreamreader