Menu
Coddy logo textTech

Gestión de errores

Parte de la sección Fundamentos del Journey de Swift de Coddy. Lección 83 de 86.

challenge icon

Desafío

Fácil

En la lección anterior, implementaste la función «Borrar todos los gastos». Ahora, añade el manejo de errores para las entradas no válidas en todo el gestor de gastos.

Modifica tu código para manejar correctamente las entradas no válidas:

  1. Cuando el usuario introduzca una opción de menú no válida (cualquier cosa distinta de "1", "2", "3", "4" o "5"), muestra Invalid option. Please try again.
  2. Al añadir un gasto (opción "1"), si la entrada no se puede convertir en un Double válido, muestra Invalid amount. Expense not added. y vuelve al menú sin añadir nada al array
  3. El resto de la funcionalidad debe seguir funcionando como antes

Comportamiento esperado:

  • Las opciones de menú no válidas muestran un mensaje de error y vuelven a mostrar el menú
  • Los importes de gastos no válidos muestran un mensaje de error y vuelven al menú
  • Las entradas válidas siguen funcionando como se implementó en las lecciones anteriores

Ejemplo de interacción:

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!

Pruébalo tú mismo

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

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Swift