亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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條經驗 獲得超5個贊

在從 bufferedReader 中放入任何數據之前,您首先調用了line變量。第一個while循環將“END”與“”進行比較,因此,顯然是錯誤的。


查看完整回答
反對 回復 2021-09-12
  • 3 回答
  • 0 關注
  • 331 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號