java.util.Scanner 是 JDK 5 引入的簡單文本掃描器,可解析基本類型和字符串。通過 System.in 包裝即可實現控制台輸入讀取。
import java.util.Scanner;
public class InputCode {
public static void main(String[] args) {
// 1. 創建掃描器,關聯標準輸入流
Scanner scanner = new Scanner(System.in);
// 2. 提示用戶輸入
System.out.println("請輸入你的身份證號:");
// 3. 讀取一行文本(包含空格)
String line = scanner.nextLine();
// 4. 處理並輸出結果
System.out.println("原來你身份證號是 " + line.length() + " 位數字的啊");
// 5. 關閉掃描器(良好習慣,釋放資源)
scanner.close();
}
}
| 方法 | 功能 | 分隔符 | 典型場景 |
|---|---|---|---|
next() | 讀取下一個 token(非空白字符序列) | 空白字符(空格、換行、Tab) | 單詞、單個標識符 |
nextLine() | 讀取整行(含前導/尾隨空格,不含換行符) | 換行符 | 完整句子、包含空格的輸入 |
nextInt() | 解析下一個 token 為 int | 空白字符 | 數字輸入 |
hasNext() | 判斷是否有下一個 token | - | 循環讀取未知數量輸入 |
Scanner sc = new Scanner(System.in);
int age = sc.nextInt(); // 輸入 "25\n",nextInt() 讀取 25,緩衝區殘留 "\n"
String name = sc.nextLine(); // 直接讀取殘留的 "\n",返回空字符串 ""
nextInt() 後額外調用一次 sc.nextLine() 消耗換行符。nextLine() 讀取行,再自行解析(Integer.parseInt())。scanner.useDelimiter(","); // 以逗號分隔
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
// 文件
Scanner fileScanner = new Scanner(new File("data.txt"));
// 字符串
Scanner strScanner = new Scanner("apple,banana,orange").useDelimiter(",");
nextLine() 讀取整行,避免分隔符殘留問題。Integer.parseInt(line.trim()) 等靜態方法,異常可控。try-with-resources 中使用(Java 7+),自動關閉:
try (Scanner scanner = new Scanner(System.in)) {
// 使用 scanner
}
BufferedReader + 手動解析,Scanner 內部同步有開銷。