Menu
Coddy logo textTech

에러 처리

Coddy Swift 여정의 기초 섹션에 포함된 레슨 — 86개 중 83번째.

challenge icon

챌린지

쉬움

이전 레슨에서는 "모든 지출 내역 삭제" 기능을 구현했습니다. 이제 지출 추적기 전체에서 유효하지 않은 입력에 대한 에러 처리를 추가해 보세요.

유효하지 않은 입력을 원활하게 처리하도록 코드를 수정하세요:

  1. 사용자가 유효하지 않은 메뉴 옵션("1", "2", "3", "4", 또는 "5" 이외의 값)을 입력하면, Invalid option. Please try again.을 출력합니다.
  2. 지출 내역을 추가할 때(옵션 "1"), 입력값이 유효한 Double로 변환될 수 없는 경우, Invalid amount. Expense not added.를 출력하고 배열에 아무것도 추가하지 않은 채 메뉴로 돌아갑니다.
  3. 그 외의 모든 기능은 이전과 동일하게 작동해야 합니다.

예상 동작:

  • 유효하지 않은 메뉴 선택 시 에러 메시지를 표시하고 메뉴를 다시 보여줍니다.
  • 유효하지 않은 지출 금액 입력 시 에러 메시지를 표시하고 메뉴로 돌아갑니다.
  • 유효한 입력은 이전 레슨에서 구현한 대로 계속 작동합니다.

상호작용 예시:

1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
7
Invalid option. Please try again.
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
1
Enter expense amount:
abc
Invalid amount. Expense not added.
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
1
Enter expense amount:
25.0
Expense added!
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
2
Your expenses:
- $25.0
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
5
Goodbye!

직접 해보기

// Daily Expense Tracker - Menu Display

var expenses: [Double] = []

while true {
    // TODO: Write your code below to print the menu options
    // Each option should be on its own line with the format: "number. option text"
    print("1. Add expense")
    print("2. View all expenses")
    print("3. Show total and average")
    print("4. Clear all expenses")
    print("5. Exit")
    
    let choice = readLine()
    
    if choice == "1" {
        print("Enter expense amount:")
        if let input = readLine(), let amount = Double(input) {
            expenses.append(amount)
            print("Expense added!")
        }
    } else if choice == "2" {
        if expenses.isEmpty {
            print("No expenses recorded.")
        } else {
            print("Your expenses:")
            for expense in expenses {
                print("- $\(expense)")
            }
        }
    } else if choice == "3" {
        if expenses.isEmpty {
            print("No expenses to calculate.")
        } else {
            let total = expenses.reduce(0, +)
            let average = total / Double(expenses.count)
            print("Total: $\(total)")
            print("Average: $\(average)")
        }
    } else if choice == "4" {
        expenses.removeAll()
        print("All expenses cleared!")
    } else if choice == "5" {
        print("Goodbye!")
        break
    } else {
        print("Coming soon...")
    }
}

기초의 모든 레슨