为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕无忌1623718 2021-09-12 10:55:18
当我在 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 的条件部分之上时,它工作正常。我想知道为什么前者不起作用。
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

不太确定你认为你遇到了什么麻烦


但是如果我在输入时运行你的代码


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


查看完整回答
反对 回复 2021-09-12
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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(""))


查看完整回答
反对 回复 2021-09-12
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

在从 bufferedReader 中放入任何数据之前,您首先调用了line变量。第一个while循环将“END”与“”进行比较,因此,显然是错误的。


查看完整回答
反对 回复 2021-09-12
  • 3 回答
  • 0 关注
  • 269 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信