Kotlin Programming

Conversão de String para Inteiro em Kotlin: Um Guia Completo

Spread the love

Kotlin oferece várias maneiras eficientes de converter strings em inteiros. A melhor abordagem depende de suas preferências de tratamento de erros. Este artigo explora três métodos comuns: toInt(), toIntOrNull() e parseInt(), destacando seus pontos fortes e fracos.

Sumário

Convertendo Strings para Inteiros com toInt()

O método toInt() oferece uma abordagem direta. No entanto, ele lança uma exceção NumberFormatException se a string de entrada não for um inteiro válido. Isso exige um bloco try-catch para um tratamento de erros robusto.


fun stringToInt(str: String): Int {
    return try {
        str.toInt()
    } catch (e: NumberFormatException) {
        println("Entrada inválida: $str")
        0 // Ou lance uma exceção personalizada, ou retorne outro valor padrão
    }
}

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

    println("Conversão de '$numStr1': ${stringToInt(numStr1)}") // Saída: 123
    println("Conversão de '$numStr2': ${stringToInt(numStr2)}") // Saída: Entrada inválida: abc, 0
}

Este exemplo mostra como gerenciar a exceção. Lembre-se de adaptar o tratamento de erros (println e o valor de retorno 0) às necessidades do seu aplicativo.

Conversão Segura com toIntOrNull()

toIntOrNull() fornece uma alternativa mais segura. Ele retorna o inteiro se bem-sucedido, ou null se a conversão falhar. Isso elimina o try-catch, resultando em código mais limpo e evitando a sobrecarga do tratamento de exceções.


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

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

    println("Conversão de '$numStr1': ${stringToIntOrNull(numStr1)}") // Saída: 123
    println("Conversão de '$numStr2': ${stringToIntOrNull(numStr2)}") // Saída: null
}

val num = stringToIntOrNull("456")
val result = num ?: 0 // Use 0 como valor padrão se a conversão falhar
println(result) // Saída: 456

val num2 = stringToIntOrNull("xyz")
val result2 = num2 ?: 0
println(result2) // Saída: 0

O operador Elvis (?:) lida elegantemente com o possível valor null. Essa abordagem é geralmente recomendada por sua concisão e segurança.

Usando parseInt() para Conversão de String para Inteiro

O método parseInt() (java.lang.Integer.parseInt()) oferece outra opção, mas é menos idiomático em Kotlin. Assim como toInt(), ele lança uma NumberFormatException, exigindo try-catch. Geralmente é menos preferido do que os métodos integrados do Kotlin.


fun stringToIntParseInt(str: String): Int {
    return try {
        Integer.parseInt(str)
    } catch (e: NumberFormatException) {
        println("Entrada inválida: $str")
        0 // Ou trate a exceção de forma diferente
    }
}

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

    println("Conversão de '$numStr1': ${stringToIntParseInt(numStr1)}") // Saída: 123
    println("Conversão de '$numStr2': ${stringToIntParseInt(numStr2)}") // Saída: Entrada inválida: abc, 0
}

Em resumo, toIntOrNull() é a abordagem recomendada devido à sua concisão e segurança de nulos. Use toInt() apenas quando você tiver certeza de que a string de entrada é sempre um inteiro válido e preferir o tratamento explícito de exceções. Evite parseInt() a menos que haja um motivo convincente para usar o método Java. Sempre trate os erros potenciais de forma eficaz para evitar falhas no aplicativo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *