首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java IO 學習筆記:BufferedReader 讀取鍵盤輸入時 while 循環無法退出的正確寫法

     編輯:程式設計綜合問答

錯誤代碼分析

String str = null;
while (str != "z") { // 錯誤:使用 != 比較字符串內容
    str = br.readLine();
    System.out.println("Input :" + str);
}

問題在於 str != "z" 比較的是對象引用而非內容。Java 中字符串常量池機制導致該判斷不可靠;且未處理 readLine() 返回 null(流結束)的情況。

正確寫法

String str = "";
while (!"z".equals(str) && str != null) {
    str = br.readLine();
    System.out.println("Input :" + str);
}
  • 使用 !"z".equals(str) 避免空指針並正確比較內容。
  • 增加 str != null 判斷,防止流結束導致死循環。
  • 初始化 str = "" 而非 null,簡化邏輯。

進階建議

Java 9+ 可使用 BufferedReader.lines() 返回 Stream 配合 takeWhile 更優雅地處理:

br.lines()
  .takeWhile(s -> !"z".equals(s))
  .forEach(s -> System.out.println("Input :" + s));
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved