Menu
Coddy logo textTech

エラー処理

CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 83/86。

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...")
    }
}

基礎のすべてのレッスン