Menu
Coddy logo textTech

Обработка ошибок

Часть раздела Основы путешествия по Swift на Coddy — урок 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...")
    }
}

Все уроки раздела Основы