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

Java 控制台輸入不顯示:改用檔案讀取或 GUI 輸入替代 System.in

     編輯:程式設計疑難解答

控制台執行 Java 程式時,使用者鍵盤輸入的字元會即時回顯在終端機 (即圖中綠色部分)。若不想看到輸入回顯,有三種常見替代方案:

方案 1:從檔案讀取 (最簡單、適合測試)

// 輸入資料預先存放 input.txt
Scanner scanner = new Scanner(new File("input.txt"));
while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    // 處理 line
}
scanner.close();
  • 完全無互動輸出,適合自動化測試、批次處理、OJ 提交。

方案 2:使用 Console.readPassword (需真實終端機,JDK 6+)

Console console = System.console();
if (console != null) {
    char[] password = console.readPassword("請輸入: "); // 不回顯
    // 處理 password,用畢建議清零: Arrays.fill(password, ' ');
} else {
    // IDE 內建終端機通常回傳 null
    System.err.println("請在命令列執行或改用檔案輸入");
}
  • 回傳 `char[]` 而非 `String`,較安全 (可手動清零)。
  • **Eclipse/IntelliJ 內建 Console 不支援** (`System.console() == null`)。

方案 3:Swing / JavaFX 圖形化輸入框

// Swing
String input = JOptionPane.showInputDialog(null, "請輸入:", "輸入", JOptionPane.QUESTION_MESSAGE);

// JavaFX (需模組化專案)
TextInputDialog dialog = new TextInputDialog();
dialog.setHeaderText("請輸入");
Optional<String> result = dialog.showAndWait();
  • 彈出視窗,完全無控制台輸出。
  • 適合桌面應用程式,不適用於純控制台作業。

針對提問截圖情境的建議

截圖顯示為 IDE (IntelliJ/Eclipse) 內建控制台,綠色字為使用者輸入。最直接做法:**在 Run Configuration 中設定「Input file」導向準備好的測資檔案**,或直接修改程式碼改用 `new Scanner(new File("..."))`。若作業要求互動式輸入但不想回顯,只能在外部 `cmd`/`bash` 執行並搭配 `Console.readPassword`。

區分「控制台回顯」與「程式邏輯」兩個層面,選擇最適合當前開發階段的方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved