繁体   English   中英

下面两个不同的代码为我提供了Java中的两个不同的输出

[英]Below two different codes gives me two different outputs in Java

参见下面的两个代码,让我知道为什么它像Java语言那样打印

BufferedReader br = new BufferedReader(new FileReader("file path"));
while(br.readLine()!= null) {
    System.out.println(br.readLine());
}
br.close();

此代码不能打印完整的文件内容,但是,如果我使用下面的代码,它将打印文件的完整内容。请解释

BufferedReader br = new BufferedReader(new FileReader("filepath"));
String str;
while((str=br.readLine())!= null) {
    System.out.println(str);
}
br.close();

简单:通过在while循环中两次调用br.readLine() ,可以从BufferedReader读取两次行。 首先在条件部分中读取一行( while (br.readLine()!=null) ),然后再次打印以打印出来( ...println(br.readLine()) )。

读取的行从缓冲区中消失了。

在您的第二个代码部分中,该行存储在条件部分中的str中。 后来该str也用于打印行。

您在第一次在while条件中使用br.readLine()并在System.out.println(br.readLine())中第二次使用br.readLine()读取了两次,这就是为什么它总是打印2,4,6,8...行和在第二个代码中,您只需读取一次,并将其存储在str变量中并打印str ,这就是为什么要打印整个文件的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM