在 MyEclipse (或 Eclipse) 控制台使用 Scanner 輸入中文時,字符顯示為**綠色**,且似乎無法換行繼續執行,誤以為是編碼異常或死循環。
scanner.next() 或 nextLine() 才會返回,程序繼續執行。Scanner sc = new Scanner(System.in);
System.out.print("請輸入姓名: ");
String name = sc.nextLine(); // 此處阻塞等待
// 控制台顯示: 請輸入姓名: █ (綠色輸入區)
// 用戶輸入: 張三 (顯示綠色)
// 用戶按 Enter
// 程序繼續: System.out.println("你好, " + name); // 輸出黑色文本
| 誤區 | 事實 | 對策 |
|---|---|---|
| 以為綠色是亂碼/錯誤 | 是 Eclipse 輸入高亮功能 | 忽略顏色,專注邏輯 |
| 輸入中文後程序不走 | 未按 Enter 結束輸入 | 務必按回車提交 |
| 用 sc.next() 只能讀單詞 | next() 遇空格/換行截斷 | 整行輸入請用 nextLine() |
| 控制台編碼設置為 GBK 導致亂碼 | IDE 控制台編碼默認跟隨項目/系統 | Run Configurations → Common → Encoding 設為 UTF-8 |
Scanner sc = new Scanner(System.in, StandardCharsets.UTF_8.name()); (Java 7+)。綠色 = 正在輸入,非錯誤。 輸入中文後**按回車**,程序即可正常讀取。若真有亂碼,請檢查上述編碼設置。這是 Eclipse 系列 IDE 獨有的控制台交互特性,習慣後反而方便區分輸入輸出。