Java Scanner輸入:如何獲取用戶輸入,從控制檯讀取數據

在編程時,我們經常需要和用戶互動——比如讓用戶輸入姓名、年齡,或者計算用戶提供的數字。Java 提供了 Scanner 類來輕鬆實現從控制檯讀取用戶輸入。本文將用最簡單的方式,一步步教你如何使用 Scanner 類獲取用戶數據。

一、什麼是 Scanner?

Scanner 是 Java 標準庫中的一個工具類,位於 java.util 包下。它能幫我們從控制檯(鍵盤)或文件中讀取數據,比如整數、字符串、小數等。對於初學者來說,最常用的是從控制檯讀取用戶輸入。

二、如何使用 Scanner?

使用 Scanner 只需三步:導入包創建對象調用方法讀取數據

1. 導入 Scanner 類

首先,需要告訴 Java 你要使用 Scanner,這需要在代碼開頭導入 Scanner 類。

import java.util.Scanner; // 導入Scanner類,必須放在代碼最上方

2. 創建 Scanner 對象

Scanner 對象負責“監聽”控制檯輸入,需要通過 System.in(標準輸入流,即鍵盤)創建:

Scanner scanner = new Scanner(System.in); // 創建Scanner對象

3. 調用方法讀取數據

創建對象後,通過 scanner 的不同方法讀取不同類型的數據,比如:
- nextInt():讀取整數(int 類型)
- nextDouble():讀取小數(double 類型)
- nextLine():讀取整行字符串(包括空格)
- next():讀取單個單詞(遇到空格或回車停止)

三、讀取不同類型的數據

下面通過具體例子,看看如何讀取常見的數據類型:

1. 讀取整數(int)

假設要讓用戶輸入年齡,代碼如下:

import java.util.Scanner;

public class InputExample {
    public static void main(String[] args) {
        // 創建Scanner對象
        Scanner scanner = new Scanner(System.in);

        // 提示用戶輸入
        System.out.print("請輸入你的年齡:");
        // 讀取整數
        int age = scanner.nextInt();

        // 輸出結果
        System.out.println("你輸入的年齡是:" + age);

        // 關閉Scanner(可選,但建議養成習慣)
        scanner.close();
    }
}

運行效果

請輸入你的年齡:20
你輸入的年齡是:20

2. 讀取字符串(String)

讀取字符串時,next()nextLine() 區別較大,需要注意:
- next():遇到空格或回車停止,只能讀取單個單詞(比如“小明”“張三”)。
- nextLine():讀取整行內容(包括空格),直到用戶按回車(適合姓名、地址等需要空格的場景)。

示例 1:用 next() 讀取字符串

System.out.print("請輸入你的姓名:");
String name = scanner.next(); // 只能讀取“小明”,如果輸入“小明 小紅”,只會讀取“小明”

示例 2:用 nextLine() 讀取字符串

System.out.print("請輸入你的姓名:");
String name = scanner.nextLine(); // 可以讀取“小明 小紅”等整行內容

3. 讀取小數(double)

如果需要讀取身高、體重等小數,用 nextDouble()

System.out.print("請輸入你的身高(米):");
double height = scanner.nextDouble();
System.out.println("你的身高是:" + height + "米");

四、完整示例:讀取多類型數據

假設要寫一個程序,讓用戶輸入姓名、年齡、身高,然後輸出這些信息:

import java.util.Scanner;

public class UserInfo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 讀取姓名(用nextLine避免空格問題)
        System.out.print("請輸入你的姓名:");
        String name = scanner.nextLine();

        // 讀取年齡(整數)
        System.out.print("請輸入你的年齡:");
        int age = scanner.nextInt();

        // 讀取身高(小數)
        System.out.print("請輸入你的身高(米):");
        double height = scanner.nextDouble();

        // 輸出信息
        System.out.println("\n你的信息:");
        System.out.println("姓名:" + name);
        System.out.println("年齡:" + age);
        System.out.println("身高:" + height + "米");

        // 關閉Scanner
        scanner.close();
    }
}

運行效果

請輸入你的姓名:張三
請輸入你的年齡:20
請輸入你的身高(米):1.75

你的信息:
姓名:張三
年齡:20
身高:1.75米

五、常見問題及解決方法

1. 輸入不匹配異常

如果用戶輸入的數據類型和程序預期不符(比如讓輸入整數,用戶卻輸入了字母),會拋出 InputMismatchException
解決:確保用戶輸入的數據類型正確,或用 try-catch 處理異常(進階內容,初學者可暫時忽略,先確保輸入正確)。

2. 緩衝區殘留問題

如果先用 nextInt() 讀取整數,再用 nextLine() 讀取字符串,可能會出現“讀取到空字符串”的問題。
原因nextInt() 讀取整數後,會留下一個“回車符”在緩衝區,nextLine() 會直接讀取這個回車符,導致字符串爲空。
解決:在 nextInt() 後加 scanner.nextLine() 清空緩衝區:

System.out.print("請輸入年齡:");
int age = scanner.nextInt();
scanner.nextLine(); // 喫掉回車符

System.out.print("請輸入姓名:");
String name = scanner.nextLine(); // 此時讀取的是用戶輸入的姓名

六、總結

Scanner 是 Java 中最基礎的輸入工具,核心步驟是:
1. 導入 java.util.Scanner
2. 創建 Scanner 對象 scanner = new Scanner(System.in)
3. 根據數據類型調用 nextInt()/nextLine()/nextDouble() 等方法讀取數據;
4. 用完後關閉 scanner.close()(釋放資源)。

通過簡單示例練習,你很快就能熟練掌握從控制檯讀取用戶輸入的方法!

小夜