Menu
CoddyTech

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

Часть раздела Основы путешествия по Swift на Coddy. Урок 83 из 86.

challenge icon

Задание

Легко

На предыдущем уроке ты реализовал функцию «Clear all expenses». Теперь добавь обработку ошибок для недопустимых входных данных во всём трекере расходов.

Измени код, чтобы корректно обрабатывать недопустимые входные данные:

  1. Если пользователь вводит недопустимый пункт меню (любой, кроме "1", "2", "3", "4" или "5"), выведи Invalid option. Please try again.
  2. При добавлении расхода (пункт "1"</code), если входные данные нельзя преобразовать в допустимое значение типа <code>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...")
    }
}

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

Потренируйтесь самостоятельно: Песочница Swift