Menu
Coddy logo textTech

Gestione degli errori

Fa parte della sezione Fondamenti del percorso Swift di Coddy. Lezione 83 di 86.

challenge icon

Sfida

Facile

Nella lezione precedente, hai implementato la funzionalità "Clear all expenses". Ora aggiungi la gestione degli errori per gli input non validi in tutto il tracker delle spese.

Modifica il codice per gestire con eleganza gli input non validi:

  1. Quando l'utente inserisce un'opzione di menu non valida (qualsiasi valore diverso da "1", "2", "3", "4" o "5"), stampa Invalid option. Please try again.
  2. Quando aggiungi una spesa (opzione "1"), se l'input non può essere convertito in un Double valido, stampa Invalid amount. Expense not added. e torna al menu senza aggiungere nulla all'array
  3. Tutte le altre funzionalità devono continuare a funzionare come prima

Comportamento previsto:

  • Le scelte di menu non valide mostrano un messaggio di errore e visualizzano di nuovo il menu
  • Gli importi delle spese non validi mostrano un messaggio di errore e riportano al menu
  • Gli input validi continuano a funzionare come implementato nelle lezioni precedenti

Esempio di interazione:

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!

Provalo tu

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

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Swift