Обработка ошибок
Часть раздела Основы путешествия по Kotlin на Coddy. Урок 90 из 93.
Задание
СреднеНа предыдущем уроке вы реализовали функциональность «Clear All». Теперь добавьте проверку входных данных, чтобы обрабатывать случаи, когда пользователь вводит недопустимую сумму расхода.
Измените программу, чтобы обрабатывать ошибки при добавлении расходов (пункт 1):
- Когда пользователь вводит сумму расхода, используйте
toDoubleOrNull()для безопасного преобразования ввода - Если преобразование возвращает
null(недопустимый ввод), выведитеInvalid amount!вместо добавления расхода - Если преобразование выполнено успешно, добавьте расход и, как и раньше, выведите
Expense added!
Все остальные пункты должны продолжать работать как раньше:
- Пункт
1: Добавить расход (с проверкой) - Пункт
2: Просмотреть все расходы - Пункт
3: Общая сумма и среднее значение - Пункт
4: Очистить все расходы - Пункт
5: ВывестиGoodbye!и завершить работу - Недопустимые пункты: вывести
Invalid option
Формат ввода:
Выбор пунктов меню и суммы расходов в виде строк.
Формат вывода:
Меню, за которым следует соответствующий ответ для каждого действия.
Пример:
Если введены значения 1, abc, 1, 25.0, 1, hello, 2 и 5, вывод должен быть следующим:
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Invalid amount!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Expense added!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Invalid amount!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Your expenses:
- $25.0
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Goodbye!Подсказка: Метод toDoubleOrNull() возвращает null, если строку невозможно преобразовать в Double, вместо аварийного завершения программы. Используйте оператор Элвиса или проверку на null, чтобы обработать этот случай.
Попробуйте сами
fun main() {
val expenses = mutableListOf<Double>()
while (true) {
println("--- Expense Tracker ---")
println("1. Add Expense")
println("2. View All Expenses")
println("3. Total and Average")
println("4. Clear All")
println("5. Exit")
println("Choose an option:")
val choice = readLine()
if (choice == "1") {
println("Enter expense amount:")
val amount = readLine()!!.toDouble()
expenses.add(amount)
println("Expense added!")
} else if (choice == "2") {
if (expenses.isEmpty()) {
println("No expenses recorded.")
} else {
println("Your expenses:")
for (expense in expenses) {
println("- \$$expense")
}
}
} else if (choice == "3") {
if (expenses.isEmpty()) {
println("No expenses recorded.")
} else {
val total = expenses.sum()
val average = total / expenses.size
println("Total: \$$total")
println("Average: \$$average")
}
} else if (choice == "4") {
expenses.clear()
println("All expenses cleared!")
} else if (choice == "5") {
println("Goodbye!")
break
} else {
println("Invalid option")
}
}
}Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеОператоры сравненияПовторение — простая математика7Базовый ввод-вывод
Функция PrintlnШаблоны строкВвод ReadLineПреобразование типовПовторение — лет до выхода на пенсиюПовторение — правда или ложь10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияИменованные аргументыЗначения по умолчаниюФункции с одним выражениемПовторение — функция SigmaПовторение — функция валидации13Итерация по последовательностям
Итерация по элементамМетод WithIndexИтерация по строкам, ч. 1Итерация по строкам, ч. 2Повторение — индексированные буквы2Переменные
Val и VarВывод типовЧислаСтрокаЛогическое значениеСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Логические операторы, часть 3Тернарный оператор с выражением ifПовторение — простая логика8Калькулятор разделения счёта
Приветственное сообщениеВвод данных3Обработка null
Что такое безопасность nullТипы, допускающие nullОператор безопасного вызоваОператор ЭлвисаОсновы задания на функцииУтверждение ненулевого значенияПовторение — безопасный доступ6Принятие решений
Инструкция ifIf — ElseIf как выражениеВыражение whenWhen с диапазонамиПовторение — простой калькулятор9Циклы
Цикл ForЦикл WhileЦикл Do-WhileBreakContinueДиапазоны в циклахВложенный циклПовторение — факториалПовторение — динамический ввод12Основы списков
List и MutableListДоступ к элементамИзменение списковМетоды списковПара и тройкаПовторение — список товаровПовторение — перевёрнутый список15Ежедневный трекер расходов
Обзор проектаВыход из программыПотренируйтесь самостоятельно: Песочница Kotlin