BufferedReader readLine()在while循环中不起作用

时间:2018-09-10 03:50:53

标签: java bufferedreader

当我在while循环块中调用readLine()时,即使按了Enter,输入也不会完成。看起来,它创建了新行,但仍在等待行输入终止。

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

String line = "";
while(!line.equals("End")){
    line = br.readLine();
    System.out.println("String from keyboard not working : "+line+"\n");
}
while((line = br.readLine())!=null) {
    System.out.println("String from keyboard in while loop : "+line+"\n");
}
}

当我将readline()放在while条件块的顶部时,它工作正常。 我想知道为什么前一阵子不起作用。

2 个答案:

答案 0 :(得分:1)

while(!line.equals("End")){
    line = br.readLine();
    System.out.println("String from keyboard not working : "+line+"\n");
}

此块工作正常。在此,一旦输入End,它将打印一次并终止。打印的原因是在循环的下一个循环中检查了条件。

while((line = br.readLine())!=null) {
    System.out.println("String from keyboard in while loop : "+line+"\n")
}

此块不会终止,因为每次您按Enter键时,终端都会发送一个空字符串。因此,如果您希望它在按Enter键时终止,则将条件更改为

while(!(line = br.readLine()).equals(""))

答案 1 :(得分:0)

您先放置了 line 变量,然后再放置来自bufferedReader的任何数据。第一个while循环将“ END”与“”进行比较,因此,显然是错误的。