Menu
Coddy logo textTech

Obsługa błędów

Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 83 z 86.

challenge icon

Wyzwanie

Łatwy

W poprzedniej lekcji zaimplementowano funkcję „Clear all expenses”. Teraz dodaj obsługę błędów dla nieprawidłowych danych wejściowych w całym menedżerze wydatków.

Zmodyfikuj swój kod, aby prawidłowo obsługiwał nieprawidłowe dane wejściowe:

  1. Gdy użytkownik wprowadzi nieprawidłową opcję menu (cokolwiek innego niż "1", "2", "3", "4" lub "5"), wyświetl Invalid option. Please try again.
  2. Podczas dodawania wydatku (opcja "1"), jeśli nie można przekonwertować danych wejściowych na prawidłową wartość typu Double, wyświetl Invalid amount. Expense not added. i wróć do menu bez dodawania czegokolwiek do tablicy
  3. Cała pozostała funkcjonalność powinna nadal działać jak wcześniej

Oczekiwane działanie:

  • Nieprawidłowe opcje menu wyświetlają komunikat o błędzie, a następnie ponownie pokazują menu
  • Nieprawidłowe kwoty wydatków wyświetlają komunikat o błędzie i powodują powrót do menu
  • Prawidłowe dane wejściowe nadal działają tak jak w poprzednich lekcjach

Przykładowa interakcja:

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!

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Swift