使用BufferedReader读取所有行

我想使用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();

}

你能告诉我我在做什么错吗?

回答:

阅读所有行的惯用方式是while ((line = buffer.readLine()) != null)。另外,我建议try-with-

resources发表声明。就像是

try (InputStreamReader instream = new InputStreamReader(System.in);

BufferedReader buffer = new BufferedReader(instream)) {

long length = 0;

String line;

while ((line = buffer.readLine()) != null) {

length += line.length();

}

System.out.println("Read length: " + length);

} catch (Exception e) {

e.printStackTrace();

}

如果你想,当你收到一个空行来结束循环,在添加一个测试为while循环

while ((line = buffer.readLine()) != null) {

if (line.isEmpty()) {

break;

}

length += line.length();

}

JLS-14.15。该break声明说:

一条break语句将控制权从一个封闭的语句中移出。

以上是 使用BufferedReader读取所有行 的全部内容, 来源链接: utcz.com/qa/433063.html

回到顶部