自訂方法-整合運用

Java 的輸入/輸出與串流

Alex Liu

Software Development Engineer

整合觀念

  • 結合並運用:
    • Enum
    • 日期與時間
    • 遞迴
  • 目標:打造清楚、可重用、好維護的方法

  • 範例程式:

    • 電子商務網站
      • 實用的 OrderStatus 系統與訂單追蹤方法
      • 會員忠誠折扣演算法。
Java 的輸入/輸出與串流

帶有方法的 Enum 定義

  • 定義 OrderStatus Enum 表示訂單狀態
enum OrderStatus {
    PLACED("Order placed successfully"),
    DELIVERED("Order delivered");

private final String message; OrderStatus(String message) { this.message = message; } public String getMessage() { return message; } }
Java 的輸入/輸出與串流

日期操作的自訂方法

  • 使用 orderDate 估算訂單送達時間
    • 使用 .plusDays() 方法為日期加上天數
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Java 的輸入/輸出與串流

折扣的遞迴方法

  • 回饋政策:按月累增折扣,回饋回流顧客
    • 用遞迴方法計算累計折扣:
public class DiscountCalculator {
    public static double cumulativeDiscount(int months) {
        if (months <= 0) return 0;
        return 5 + cumulativeDiscount(months - 1); // $5 discount per month
    }
}
Java 的輸入/輸出與串流

自訂物件

  • 建立 Order 類別,包含所有訂單相關資訊
    • 包含關鍵欄位如 iddatecurrent status
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

    Order(int orderId, LocalDate orderDate) {
        this.orderId = orderId;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
    }
Java 的輸入/輸出與串流

帶有 toString() 的客製物件

  • 我們想用員工易讀、易處理的方式列印訂單
    • 定義 toString() 方法,決定 Order 物件的列印格式。
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • 呼叫 .toString() 的範例輸出:
    Order[id=10015, date=2025-03-19]
    
Java 的輸入/輸出與串流

Main 方法

public class Main {
    public static void main(String[] args) {
        Order order = new Order(101, LocalDate.now());
        System.out.println(order.toString());

LocalDate delivery = OrderUtils.estimateDelivery(order.orderDate, 7); System.out.println("Estimated Delivery: " + delivery); System.out.println(OrderStatus.PLACED);
double discount = DiscountCalculator.cumulativeDiscount(3); System.out.println("Total Discount: $" + discount); } }
Java 的輸入/輸出與串流

Main 方法-輸出

  • 當新訂單建立時會執行此 main 方法,資訊如下:
    • 使用者已訂閱 3 個月
    • 預估送達時間為 7 天
    • 訂單初始狀態為 PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Java 的輸入/輸出與串流

一起來練習吧!

Java 的輸入/輸出與串流

Preparing Video For Download...