在編程中,輸入輸出是非常基礎且重要的操作。想象一下,如果程序只能自己運行,不能和用戶交流,那是不是很無聊?比如,一個計算器程序需要知道用戶想計算什麼,一個聊天程序需要獲取用戶輸入的消息。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()喫掉回車符,避免讀取空行。
通過這些基礎操作,你已經可以實現與用戶的簡單交互了!多動手嘗試不同的輸入輸出組合,很快就能熟練掌握~