iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
自我挑戰組

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

Array 陣列:一次保存多筆消費資料

  • 分享至 

  • xImage
  •  

昨天使用 while 迴圈做出了可以重複操作的記帳系統選單。
不過昨天還有一個問題:雖然可以新增消費,但輸入完之後,資料沒有真正保存下來,所以「查看紀錄」功能還不能使用。今天要學習 Java 的 Array(陣列),讓程式可以一次保存多筆消費資料。

什麼是 Array?
之前使用一般變數時,一個變數通常只能存一個資料。
例如:
String item = "早餐";
如果今天有很多筆消費,就需要很多變數:
String item1 = "早餐";
String item2 = "午餐";
String item3 = "晚餐";
這樣資料一多就會變得很麻煩。
Array 可以讓我們使用一個變數名稱,保存很多筆相同類型的資料。
例如:
String[] items = {"早餐", "午餐", "晚餐"};
這個 items 陣列裡就保存了三筆資料。

Array 的位置從 0 開始
Java 陣列有一個需要注意的地方,就是第一個位置不是 1,而是從 0 開始。
例如:
String[] items = {"早餐", "午餐", "晚餐"};
它們的位置分別是:
items[0] → 早餐
items[1] → 午餐
items[2] → 晚餐

如果想取得第一筆資料,可以寫:
System.out.println(items[0]);
執行結果:
早餐
這也是昨天學習 for 迴圈時,為什麼常常會看到 i = 0。

建立記帳系統需要的陣列
今天先建立兩個陣列:
String[] items = new String[10];
int[] amounts = new int[10];
items 用來保存消費項目,amounts 用來保存消費金額。
new String[10] 代表目前最多可以保存 10 筆資料。

另外再建立:
int count = 0;
用來記錄目前已經存了幾筆消費。

新增第一筆資料
假設使用者輸入:
早餐
60
可以把資料放進:
items[count] = "早餐";
amounts[count] = 60;
一開始:
count = 0
所以實際上就是:
items[0] = "早餐";
amounts[0] = 60;
存完之後:
count++;
count 就會變成 1,下一筆資料就會存進 items[1] 和 amounts[1]。

今天的小實作:保存多筆消費資料
今天把昨天的記帳系統繼續改進:
import java.util.Scanner;

public class Main {
public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    String[] items = new String[10];
    int[] amounts = new int[10];

    int count = 0;
    boolean running = true;

    while (running) {

        System.out.println();
        System.out.println("===== 個人記帳系統 =====");
        System.out.println("1. 新增消費");
        System.out.println("2. 查看紀錄");
        System.out.println("3. 離開");

        System.out.print("請選擇功能:");
        int choice = scanner.nextInt();
        scanner.nextLine();

        switch (choice) {

            case 1:

                if (count < 10) {

                    System.out.print("請輸入消費項目:");
                    items[count] = scanner.nextLine();

                    System.out.print("請輸入消費金額:");
                    amounts[count] = scanner.nextInt();
                    scanner.nextLine();

                    count++;

                    System.out.println("記帳成功!");

                } else {
                    System.out.println("紀錄已滿!");
                }

                break;

            case 2:

                System.out.println();
                System.out.println("===== 消費紀錄 =====");

                if (count == 0) {

                    System.out.println("目前沒有消費紀錄。");

                } else {

                    for (int i = 0; i < count; i++) {
                        System.out.println(
                            (i + 1) + ". "
                            + items[i] + ":"
                            + amounts[i] + " 元"
                        );
                    }
                }

                break;

            case 3:

                running = false;
                System.out.println("已離開個人記帳系統!");
                break;

            default:

                System.out.println("輸入錯誤,請重新選擇!");
        }
    }

    scanner.close();
}

}

實際執行看看
第一次選擇:
請選擇功能:1
請輸入消費項目:早餐
請輸入消費金額:60
記帳成功!

再新增一筆:
請選擇功能:1
請輸入消費項目:捷運
請輸入消費金額:30
記帳成功!

再新增:
請選擇功能:1
請輸入消費項目:午餐
請輸入消費金額:120
記帳成功!

接著選擇:
請選擇功能:2
就可以看到:
===== 消費紀錄 =====

  1. 早餐:60 元
  2. 捷運:30 元
  3. 午餐:120 元
    這樣昨天還沒有完成的「查看紀錄」功能,今天就真的可以使用了。

Array 目前還有一個問題
今天建立的是:
String[] items = new String[10];
所以一開始就決定最多只能保存 10 筆資料。
如果未來想記第 11 筆,就沒有位置可以放了。
這也是 Array 比較不方便的地方之一。
如果可以有一種方式,讓資料數量增加時,儲存空間也可以跟著增加,就會更適合真正的記帳系統。

這就是之後會學到的 ArrayList。

Day 8 學習心得
今天學習了 Java 的 Array,並把它實際加入記帳系統中。最大的進步是程式終於可以同時保存多筆消費資料,而且使用者選擇「查看紀錄」時,也可以看到之前新增的內容。
一開始對陣列從 0 開始這件事有點容易搞混,不過搭配 count 和 for 迴圈之後,就比較能理解每一筆資料是怎麼被保存和讀取的。
目前 Array 還是有固定大小的限制,所以接下來想再學習更方便的資料儲存方式,讓記帳系統可以更彈性地管理消費紀錄。


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

尚未有邦友留言

立即登入留言