[菜鸟问题]从控制台读取字符串代码比较

从标准输入读取一个字符串需要使用 BufferedReader 的 readLine() 方法。
// 使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRReadLines {
public static void main(String args[]) throws IOException
{
// 使用 System.in 创建 BufferedReader
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String str;
System.out.println("Enter lines of text.");
System.out.println("Enter 'end' to quit.");
do {
str = br.readLine();
System.out.println(str);
} while(!str.equals("end"));
}
}
这样书写是正常的,但是不明白为什么一定要把br.readLine()给了str.下面的写法有什么不对吗?
do {
// str = br.readLine();
System.out.println(br.readLine());
} while(!br.readLine().equals("end"));
这样输出的结果是
图片说明

while(! br.readLine() .equals("end"));
这句话有问题,在判断条件时,会再次读一行,所以会出现问题

do {
// str = br.readLine();
System.out.println(br.readLine());
} while(!**br.readLine()**.equals("end"));
这句话有问题,在判断条件时,会再次读一行,所以会出现问题