刻薄的回答:你做错的只是在 Java 中创建 2 个对象来做某事......如果你搜索,你可能会找到更多扩展 BufferedReader 或 ExtendedBufferReader 等的类,然后它可以是真正的 Enterprise Java .
现在我已经从我的系统中得到了这个:更有用的答案。输入EOF时System.in关闭,Linux下是Control-D,我想MacOS,Windows下我想是Control-Z加回车。如果你想检查输入(或者更具体地说,两个输入......一个完成最后一行,一个表示你已经完成,这本质上是 http 处理确定 http 标头何时完成的时间,是时候http 正文,然后@dbank 的解决方案应该是一个可行的选项,我将尝试进行小修复,以将 ! 移动到 while 谓词而不是 !while 中。
(编辑#2:实现 readLine 去除换行符,所以空行将“”而不是换行符,所以现在我的代码转移到另一个答案,EOF 位作为答案而不是注释)
编辑......这很奇怪,@dbank 在我输入答案时已经回答了,如果我没有提到 EOF 替代方案,我会停下来。用我要进行的编辑从记忆中重复他的代码:
InputStreamReader instream = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(instream);
line= buffer.readLine();
while (line != null && !line.equals("")){
length = length + line.length();
line= buffer.readLine();
}