前一天我學到了 Java 的變數與資料型態,也試著用變數記錄一筆消費資料。
不過昨天的消費項目、金額和分類都是直接寫在程式碼裡,如果每次記帳都要修改程式碼,其實很不方便。
所以今天要學習 Java 的 Scanner,讓使用者可以直接輸入自己的消費資料。
什麼是 Scanner?
Scanner 是 Java 中可以用來讀取使用者輸入資料的工具。
使用 Scanner 前,需要先加入:
import java.util.Scanner;
接著建立 Scanner:
Scanner scanner = new Scanner(System.in);
這樣程式就可以接收我們從鍵盤輸入的內容。
例如:
System.out.print("請輸入姓名:");
String name = scanner.nextLine();
程式執行後,就會等待使用者輸入姓名。
Scanner 常見的輸入方式
不同資料可以使用不同的方法讀取。
例如讀取文字:
String item = scanner.nextLine();
讀取整數:
int amount = scanner.nextInt();
所以如果我要輸入「晚餐」和「150」,就可以分別使用 nextLine() 和 nextInt()。
今天的小實作:自己輸入一筆消費
今天把昨天的記帳程式改成可以讓使用者自己輸入資料。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("===== 個人記帳系統 =====");
System.out.print("請輸入消費項目:");
String item = scanner.nextLine();
System.out.print("請輸入消費金額:");
int amount = scanner.nextInt();
scanner.nextLine();
System.out.print("請輸入消費分類:");
String category = scanner.nextLine();
System.out.println();
System.out.println("===== 記帳完成 =====");
System.out.println("消費項目:" + item);
System.out.println("消費金額:" + amount + " 元");
System.out.println("消費分類:" + category);
scanner.close();
}
}
執行結果
例如我輸入:
===== 個人記帳系統 =====
請輸入消費項目:晚餐
請輸入消費金額:150
請輸入消費分類:飲食
===== 記帳完成 =====
消費項目:晚餐
消費金額:150 元
消費分類:飲食
這樣就比昨天更像真正的記帳程式了。
昨天的資料只能直接寫在程式碼裡,今天使用 Scanner 之後,就可以在每次執行程式時輸入不同的消費項目、金額和分類。
為什麼中間有 scanner.nextLine()?
今天寫程式的時候有一個比較容易搞混的地方。
在這段:
int amount = scanner.nextInt();
scanner.nextLine();
nextInt() 讀取完數字之後,輸入時按下 Enter 所留下的換行還沒有被讀取。
所以再加一次:
scanner.nextLine();
把換行讀掉,下一次輸入消費分類時才不會直接被跳過。
這也是今天實作時學到的一個小細節。
Day 3 學習心得
今天學會使用 Scanner 接收使用者輸入,也把前一天的記帳程式再往前完成了一步。
以前寫程式時比較常直接把資料寫在程式碼裡,今天改成讓使用者自己輸入之後,感覺程式開始真的可以互動了。
另外也學到 nextInt() 和 nextLine() 一起使用時需要注意換行的問題。雖然目前一次只能輸入一筆資料,但接下來可以慢慢加入判斷和其他功能,讓記帳系統越來越完整。