Try как выражение
Часть раздела Логика и управление потоком путешествия по Kotlin на Coddy. Урок 53 из 63.
Конструкция try/catch может возвращать значение: результатом является последнее выражение завершившегося блока try или соответствующего блока catch. После этого выполняется блок finally для очистки, но его последнее выражение не заменяет это значение. Отделяй очистку от вычисления.
Внутри main:
val value = try { "bad".toInt() } catch (error: NumberFormatException) { -1 }
println(value)Соответствующий блок catch предоставляет минус один в качестве результата выражения.
Выражение try получает своё значение из завершённой ветви try или catch.
Задание
СреднеДополните parsedDouble параметром text: String. Используйте выражение try, чтобы преобразовать текст в Int и удвоить его. Перехватите NumberFormatException и используйте -1. Успешно преобразуемые входные значения находятся в диапазоне от -1000 до 1000; также могут встречаться недопустимые строки и строки со значениями вне этого диапазона. Не удаляйте пробелы.
Если выше не указаны более строгие границы, коллекции содержат не более 100 элементов на каждом уровне, а целочисленные аргументы и целочисленные значения коллекций находятся в диапазоне от -1000 до 1000. Текст, предоставленный для преобразования, может содержать недопустимые представления или представления значений вне диапазона, как описано выше.
Верните значение типа Int. Сохраните предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его размера, за которым следуют его элементы, а map начинается с количества записей, за которым следуют каждые ключ и значение. Вложенные списки повторяют формат «размер и элементы» для каждой строки. Предоставленный main выводит возвращаемое значение, за которым следует один перевод строки. Списки используют стандартный формат Kotlin со скобками; не выводите дополнительные метки.
Попробуйте сами
fun parsedDouble(text: String): Int {
// Напишите ваше решение здесь.
return 0
}
fun main() {
val text = readLine().orEmpty()
println(parsedDouble(text))
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Карты, часть 1
Создание картБезопасный доступ к картамОбновление картПроверка ключейПовторение — складской учёт4Вложенные коллекции
Списки списковОбход строкСводки по строкамСведение вложенных списковПовторение — ряды мест7Конвейеры коллекций
Преобразование с помощью MapФильтрация значенийПроверка правил коллекцийНакопление с помощью FoldПовторение — одобренные итоги2Карты. Часть 2
Перебор записей картыКлючи и значенияКарты частотВложенные картыПовторение — отчёт о частотах5Проект — Книга контактов
Сохранение контактовПоиск контактов8Сортировка и группировка
Сортировка по ключуОбъединение сравненийГруппировка значенийСвязывание по ключуПовторение — рейтинг по длине11Обработка ошибок
Разбор без исключенийПерехват конкретных ошибокTry как выражениеПроверка с помощью RequireПовторение — проверенные величины3Множества и принадлежность
Создание множествОбновление множествОперации над множествамиПроверка подмножествПовторение — гости мероприятия6Значения функций
Написание лямбдТипы функцийПередача функцийЗахваченные переменныеПовторение — настраиваемый счёт9Расширенный контроль потока выполнения
Защитные условияПрерывание именованных цикловПродолжение именованных цикловРекурсивные функцииПовторение — первая допустимая строкаПотренируйтесь самостоятельно: Песочница Kotlin