Java輸入輸出:Scanner讀取輸入,System.out輸出信息

在編程中,輸入輸出是非常基礎且重要的操作。想象一下,如果程序只能自己運行,不能和用戶交流,那是不是很無聊?比如,一個計算器程序需要知道用戶想計算什麼,一個聊天程序需要獲取用戶輸入的消息。Java提供了多種方式來實現輸入和輸出,其中 System.out 用於輸出信息,Scanner 類用於讀取用戶輸入。接下來,我們一步步學習這兩個常用的方法。

一、輸出信息:使用 System.out

在Java中,System.out 代表標準輸出流,最常用的輸出方式有三種:println()print()printf()。它們的作用都是在控制檯顯示內容,但細節有所不同。

1.1 println():輸出後自動換行

println() 會在輸出內容的末尾自動添加一個換行符(\n)。比如:

System.out.println("Hello, Java!"); // 輸出:Hello, Java! 然後換行
System.out.println("我是初學者");     // 輸出:我是初學者 然後換行

運行這段代碼,控制檯會顯示兩行內容,分別是 “Hello, Java!” 和 “我是初學者”。

1.2 print():輸出後不換行

print() 只輸出內容,不會自動換行。比如:

System.out.print("你好,"); // 輸出:你好,(不換行)
System.out.print("世界!"); // 輸出:世界!(緊接着前面的內容,不換行)
// 此時控制檯顯示:你好,世界!

注意,print() 不會自動換行,所以多個 print() 語句會連續輸出在同一行。

1.3 printf():格式化輸出

printf() 可以按照指定的格式輸出內容,類似C語言的 printf。它使用佔位符來表示不同類型的數據,比如:

  • %d:整數
  • %s:字符串
  • %f:浮點數(小數)

舉個例子:

int age = 20;
String name = "小明";
double height = 1.75;

System.out.printf("姓名:%s,年齡:%d歲,身高:%.2f米\n", name, age, height);
// 輸出:姓名:小明,年齡:20歲,身高:1.75米

這裏 %.2f 表示浮點數保留兩位小數,非常適合格式化數字輸出。

二、讀取輸入:使用 Scanner 類

如果需要獲取用戶輸入(比如從鍵盤輸入數據),Java的 Scanner 類是一個非常方便的工具。它位於 java.util 包下,需要先導入才能使用。

2.1 導入 Scanner 類

在代碼開頭,需要先導入 Scanner 類:

import java.util.Scanner; // 導入Scanner類

2.2 創建 Scanner 對象

導入後,創建一個 Scanner 對象來讀取輸入,輸入源通常是 System.in(標準輸入流,即鍵盤輸入):

Scanner sc = new Scanner(System.in); // 創建Scanner對象,sc是變量名

這裏的 sc 就是我們用來讀取輸入的“工具”,通過它可以調用各種讀取方法。

2.3 常用讀取方法

Scanner 提供了多種方法來讀取不同類型的數據,下面是最常用的幾種:

讀取整數:nextInt()

System.out.print("請輸入一個整數:");
int num = sc.nextInt(); // 讀取用戶輸入的整數
System.out.println("你輸入的整數是:" + num);

讀取字符串:next()nextLine()

  • next():讀取字符串,遇到空格或回車就停止(不包含空格或回車)。
  • nextLine():讀取字符串,直到遇到回車爲止(包含空格)。

注意:如果在使用 nextInt() 等方法後直接用 nextLine(),可能會讀取到空行!因爲 nextInt() 讀取數字後會留下一個“回車符”在輸入流中,nextLine() 會先讀取這個回車符,導致得到空字符串。解決辦法是在 nextInt() 後額外調用一次 nextLine() 來“喫掉”這個回車符。

舉個例子:

// 讀取字符串(用next())
System.out.print("請輸入名字(用空格分隔的話只能讀取第一個單詞):");
String name1 = sc.next(); // 輸入 "張三 李四",只能得到 "張三"

// 讀取字符串(用nextLine())
System.out.print("請輸入全名(可以包含空格):");
String name2 = sc.nextLine(); // 輸入 "張三 李四",得到 "張三 李四"

// 注意:nextInt() 後需要喫掉回車符
System.out.print("請輸入年齡:");
int age = sc.nextInt();
sc.nextLine(); // 喫掉回車符,避免影響後面的nextLine()
System.out.print("請輸入身高(米):");
double height = sc.nextDouble(); // 正確讀取身高

讀取浮點數:nextDouble()

System.out.print("請輸入一個小數:");
double decimal = sc.nextDouble(); // 讀取浮點數
System.out.println("你輸入的小數是:" + decimal);

2.4 關閉 Scanner(可選)

使用完 Scanner 後,最好關閉它以釋放資源(比如 sc.close();):

sc.close(); // 關閉Scanner,結束輸入

三、綜合示例:簡單的交互程序

現在,我們把輸入輸出結合起來,寫一個完整的小例子:讓用戶輸入個人信息(姓名、年齡、身高),然後程序輸出這些信息。

import java.util.Scanner;

public class InputOutputDemo {
    public static void main(String[] args) {
        // 1. 輸出歡迎語
        System.out.println("===== 個人信息採集系統 =====");

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

        // 3. 讀取姓名
        System.out.print("請輸入你的姓名:");
        String name = sc.nextLine();

        // 4. 讀取年齡(注意喫掉回車符)
        System.out.print("請輸入你的年齡:");
        int age = sc.nextInt();
        sc.nextLine(); // 喫掉回車符

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

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

        // 7. 關閉Scanner
        sc.close();
    }
}

運行示例

===== 個人信息採集系統 =====
請輸入你的姓名:張三
請輸入你的年齡:20
請輸入你的身高(米):1.75

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

四、總結

  • 輸出System.out 是輸出的核心,println() 自動換行,print() 不換行,printf() 格式化輸出。
  • 輸入Scanner 類用於讀取輸入,需先導入 java.util.Scanner,創建對象 Scanner sc = new Scanner(System.in);,常用方法有 nextInt()nextLine()next() 等。
  • 注意next()nextLine() 的區別,以及 nextInt() 後需用 nextLine() 喫掉回車符,避免讀取空行。

通過這些基礎操作,你已經可以實現與用戶的簡單交互了!多動手嘗試不同的輸入輸出組合,很快就能熟練掌握~

小夜