BufferedReader readLine() 在 while 循环中不工作
BufferedReader readLine() not working in a while loop
当我在 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 的条件部分之上时,它工作正常。
我想知道为什么前一个 while 不起作用。
您在从 bufferedReader 中放入任何数据之前首先调用了 line 变量。第一个 while 循环将 "END" 与 "" 进行比较,因此,显然是错误的。
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(""))
不太确定您认为自己遇到了什么麻烦
但是如果我 运行 输入你的代码
test
String from keyboard not working : test
End
String from keyboard not working : End
kkk
String from keyboard in while loop : kkk
然后如果我输入 ctrl-d 那么第二个循环将终止
即使我按下回车, enter
也没有终止输入,试试ctrl-d
当我在 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 的条件部分之上时,它工作正常。 我想知道为什么前一个 while 不起作用。
您在从 bufferedReader 中放入任何数据之前首先调用了 line 变量。第一个 while 循环将 "END" 与 "" 进行比较,因此,显然是错误的。
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(""))
不太确定您认为自己遇到了什么麻烦
但是如果我 运行 输入你的代码
test
String from keyboard not working : test
End
String from keyboard not working : End
kkk
String from keyboard in while loop : kkk
然后如果我输入 ctrl-d 那么第二个循环将终止
即使我按下回车, enter
也没有终止输入,试试ctrl-d