Kotlin Programming

Преобразование строки в целое число в Kotlin: Полное руководство

Spread the love

Kotlin предоставляет несколько эффективных способов преобразования строк в целые числа. Наилучший подход зависит от ваших предпочтений в обработке ошибок. В этой статье рассматриваются три распространенных метода: toInt(), toIntOrNull() и parseInt(), с выделением их сильных и слабых сторон.

Содержание

Преобразование строк в целые числа с помощью toInt()

Метод toInt() предлагает прямой подход. Однако он вызывает исключение NumberFormatException, если входная строка не является допустимым целым числом. Это требует блока try-catch для надежной обработки ошибок.


fun stringToInt(str: String): Int {
    return try {
        str.toInt()
    } catch (e: NumberFormatException) {
        println("Неверный ввод: $str")
        0 // Или бросить пользовательское исключение, или вернуть другое значение по умолчанию
    }
}

fun main() {
    val numStr1 = "123"
    val numStr2 = "abc"

    println("Преобразование '$numStr1': ${stringToInt(numStr1)}") // Output: 123
    println("Преобразование '$numStr2': ${stringToInt(numStr2)}") // Output: Неверный ввод: abc, 0
}

Этот пример показывает, как обрабатывать исключение. Не забудьте адаптировать обработку ошибок (println и возвращаемое значение 0) к потребностям вашего приложения.

Безопасное преобразование с помощью toIntOrNull()

toIntOrNull() предоставляет более безопасную альтернативу. Он возвращает целое число, если преобразование успешно, или null, если преобразование завершилось неудачей. Это исключает try-catch, что приводит к более чистому коду и избегает накладных расходов на обработку исключений.


fun stringToIntOrNull(str: String): Int? {
    return str.toIntOrNull()
}

fun main() {
    val numStr1 = "123"
    val numStr2 = "abc"

    println("Преобразование '$numStr1': ${stringToIntOrNull(numStr1)}") // Output: 123
    println("Преобразование '$numStr2': ${stringToIntOrNull(numStr2)}") // Output: null
}

val num = stringToIntOrNull("456")
val result = num ?: 0 // Использовать 0 в качестве значения по умолчанию, если преобразование завершилось неудачей
println(result) // Output: 456

val num2 = stringToIntOrNull("xyz")
val result2 = num2 ?: 0
println(result2) // Output: 0

Оператор Elvis (?:) элегантно обрабатывает потенциальное значение null. Этот подход обычно рекомендуется из-за его краткости и безопасности.

Использование parseInt() для преобразования строки в целое число

Метод parseInt() (java.lang.Integer.parseInt()) предлагает еще один вариант, но он менее идиоматичен в Kotlin. Как и toInt(), он вызывает NumberFormatException, требующий try-catch. Он, как правило, менее предпочтителен, чем встроенные методы Kotlin.


fun stringToIntParseInt(str: String): Int {
    return try {
        Integer.parseInt(str)
    } catch (e: NumberFormatException) {
        println("Неверный ввод: $str")
        0 // Или обработать исключение по-другому
    }
}

fun main() {
    val numStr1 = "123"
    val numStr2 = "abc"

    println("Преобразование '$numStr1': ${stringToIntParseInt(numStr1)}") // Output: 123
    println("Преобразование '$numStr2': ${stringToIntParseInt(numStr2)}") // Output: Неверный ввод: abc, 0
}

В заключение, toIntOrNull() является рекомендуемым подходом из-за его краткости и безопасности типов. Используйте toInt() только тогда, когда вы уверены, что входная строка всегда является допустимым целым числом и предпочитаете явную обработку исключений. Избегайте parseInt(), если нет веских причин использовать метод Java. Всегда эффективно обрабатывайте потенциальные ошибки, чтобы предотвратить сбои приложения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *