iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0
自我挑戰組

Java 程式設計與實作:30 天打造個人記帳系統系列 第 10 篇

Method 方法:把記帳系統的功能整理乾淨

  • 分享至 

  • xImage
  •  

昨天學習了 ArrayList,讓記帳系統可以自由新增多筆消費資料。
不過隨著功能越來越多,我發現 main 裡面的程式碼也越來越長。如果之後還要加入刪除、修改、統計等功能,全部寫在同一個地方會變得很難閱讀。
所以今天要學習 Java 的 Method(方法),把不同功能分開處理。

什麼是 Method?
Method 可以把一段程式碼整理成一個獨立的功能。
例如:
public static void sayHello() {
System.out.println("Hello!");
}
建立 Method 之後,可以在 main 裡呼叫:
sayHello();
執行結果:
Hello!
這樣的好處是,如果同一個功能需要使用很多次,就不用一直重複寫相同的程式碼。

為什麼記帳系統需要 Method?
目前我們的記帳系統已經有:

  1. 新增消費
  2. 查看紀錄
  3. 離開
    之前所有功能都直接寫在 switch 裡面。

今天可以把它們整理成:
addExpense();
showExpenses();
這樣只要看到 Method 的名稱,就大概知道這段程式負責什麼功能。

第一個 Method:顯示系統選單
先從最簡單的開始:
public static void showMenu() {
System.out.println();
System.out.println("===== 個人記帳系統 =====");
System.out.println("1. 新增消費");
System.out.println("2. 查看紀錄");
System.out.println("3. 離開");
}
之後在 main 裡只需要:
showMenu();
就可以顯示完整選單。

Method 也可以接收資料
例如要顯示一筆消費資料,可以寫:
public static void showExpense(String item, int amount) {
System.out.println("消費項目:" + item);
System.out.println("消費金額:" + amount + " 元");
}
呼叫時:
showExpense("午餐", 120);
結果:
消費項目:午餐
消費金額:120 元
這裡的 item 和 amount 就是傳進 Method 的資料。

今天的小實作:整理記帳系統
今天把之前的程式重新整理,將不同功能拆成 Method。
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
static Scanner scanner = new Scanner(System.in);
static ArrayList items = new ArrayList<>();
static ArrayList amounts = new ArrayList<>();
public static void main(String[] args) {
boolean running = true;
while (running) {
showMenu();
System.out.print("請選擇功能:");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
addExpense();
break;
case 2:
showExpenses();
break;
case 3:
running = false;
System.out.println("已離開個人記帳系統!");
break;
default:
System.out.println("輸入錯誤,請重新選擇!");
}
}
scanner.close();
}
public static void showMenu() {
System.out.println();
System.out.println("===== 個人記帳系統 =====");
System.out.println("1. 新增消費");
System.out.println("2. 查看紀錄");
System.out.println("3. 離開");
}
public static void addExpense() {
System.out.print("請輸入消費項目:");
String item = scanner.nextLine();
System.out.print("請輸入消費金額:");
int amount = scanner.nextInt();
scanner.nextLine();
items.add(item);
amounts.add(amount);
System.out.println("記帳成功!");
}
public static void showExpenses() {
System.out.println();
System.out.println("===== 消費紀錄 =====");
if (items.size() == 0) {
System.out.println("目前沒有消費紀錄。");
} else {
for (int i = 0; i < items.size(); i++) {
System.out.println(
(i + 1) + ". "
+ items.get(i) + ":"
+ amounts.get(i) + " 元"
);
}
}
}
}

執行結果
執行程式後:
===== 個人記帳系統 =====

  1. 新增消費
  2. 查看紀錄
  3. 離開
    請選擇功能:1

新增第一筆:
請輸入消費項目:早餐
請輸入消費金額:60
記帳成功!

再新增:
請輸入消費項目:捷運
請輸入消費金額:30
記帳成功!

選擇 2:
===== 消費紀錄 =====

  1. 早餐:60 元
  2. 捷運:30 元

功能其實和昨天差不多,但今天最大的改變不是增加新功能,而是把程式的結構整理得更清楚。

整理前和整理後
之前的程式會像:
case 1:
// 很多新增消費的程式碼
// ...
// ...
break;

現在只需要:
case 1:
addExpense();
break;
看到 addExpense() 就知道這是「新增消費」。

查看紀錄也是:
case 2:
showExpenses();
break;
這樣之後程式越來越大的時候,會比較容易找到自己想修改的功能。

今天認識的三個 Method
目前把記帳系統分成:
showMenu();
負責顯示主選單。
addExpense();
負責新增消費。
showExpenses();
負責顯示所有消費紀錄。
之後如果增加「刪除紀錄」,也可以再建立:
deleteExpense();
這樣每個 Method 都負責自己的工作。

Day 10 學習心得
今天學習了 Java 的 Method。和前幾天不同,今天沒有增加很多新的記帳功能,而是把原本越來越長的程式重新整理。
一開始會覺得全部寫在 main 裡比較直接,但是功能增加之後,程式碼真的會變得很亂。把新增消費、查看紀錄和顯示選單分成不同 Method 之後,我覺得整個程式清楚很多。
目前已經完成 10 天,也開始把前面學到的變數、Scanner、條件判斷、迴圈、ArrayList 和 Method 組合在同一個程式裡。接下來希望可以進一步學習 Java 的物件導向,讓每一筆消費資料可以整理得更完整。


上一篇
ArrayList:讓消費紀錄可以自由增加
系列文
Java 程式設計與實作:30 天打造個人記帳系統 共 10 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言