Menu
Coddy logo textTech

Tratamento de Erros

Parte da seção Fundamentos do Journey de Swift da Coddy — lição 83 de 86.

challenge icon

Desafio

Fácil

Na lição anterior, você implementou o recurso "Clear all expenses". Agora, adicione o tratamento de erros para entradas inválidas em todo o rastreador de despesas.

Modifique seu código para lidar com entradas inválidas de forma adequada:

  1. Quando o usuário inserir uma opção de menu inválida (qualquer coisa diferente de "1", "2", "3", "4" ou "5"), exiba Invalid option. Please try again.
  2. Ao adicionar uma despesa (opção "1"), se a entrada não puder ser convertida em um Double válido, exiba Invalid amount. Expense not added. e retorne ao menu sem adicionar nada ao array
  3. Todas as outras funcionalidades devem continuar funcionando como antes

Comportamento esperado:

  • Escolhas de menu inválidas exibem uma mensagem de erro e mostram o menu novamente
  • Valores de despesa inválidos exibem uma mensagem de erro e retornam ao menu
  • Entradas válidas continuam a funcionar conforme implementado nas lições anteriores

Exemplo de interação:

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!

Experimente você mesmo

// 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 as lições de Fundamentos