Kotlin Programming

Kotlin String’den Integer’a Dönüşüm: Kapsamlı Kılavuz

Spread the love

Kotlin, dizeleri tam sayılara dönüştürmek için çeşitli verimli yollar sunar. En iyi yaklaşım, hata işleme tercihlerinize bağlıdır. Bu makale, güçlü ve zayıf yönlerini vurgulayarak, üç yaygın yöntemi ele almaktadır: toInt(), toIntOrNull() ve parseInt().

İçerik Tablosu

toInt() ile Dizeleri Tam Sayılara Dönüştürme

toInt() yöntemi doğrudan bir yaklaşım sunar. Bununla birlikte, giriş dizisi geçerli bir tam sayı değilse NumberFormatException hatası fırlatır. Bu, sağlam hata işleme için bir try-catch bloğu gerektirir.


fun stringToInt(str: String): Int {
    return try {
        str.toInt()
    } catch (e: NumberFormatException) {
        println("Geçersiz giriş: $str")
        0 // Veya özel bir istisna fırlatın veya başka bir varsayılan değer döndürün
    }
}

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

    println("'${numStr1}' dönüşümü: ${stringToInt(numStr1)}") // Çıktı: 123
    println("'${numStr2}' dönüşümü: ${stringToInt(numStr2)}") // Çıktı: Geçersiz giriş: abc, 0
}

Bu örnek, istisnanın nasıl yönetileceğini göstermektedir. Hata işlemesini (println ve 0 dönüş değeri) uygulamanızın ihtiyaçlarına göre uyarlamayı unutmayın.

toIntOrNull() ile Güvenli Dönüşüm

toIntOrNull() daha güvenli bir alternatif sunar. Başarılı olursa tam sayıyı, dönüşüm başarısız olursa null değerini döndürür. Bu, try-catch‘i ortadan kaldırır, daha temiz kod sağlar ve istisna işlemenin ek yükünden kaçınır.


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

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

    println("'${numStr1}' dönüşümü: ${stringToIntOrNull(numStr1)}") // Çıktı: 123
    println("'${numStr2}' dönüşümü: ${stringToIntOrNull(numStr2)}") // Çıktı: null
}

val num = stringToIntOrNull("456")
val result = num ?: 0 // Dönüşüm başarısız olursa 0'ı varsayılan değer olarak kullan
println(result) // Çıktı: 456

val num2 = stringToIntOrNull("xyz")
val result2 = num2 ?: 0
println(result2) // Çıktı: 0

Elvis operatörü (?:) olası null değerini zarifçe ele alır. Bu yaklaşım, özlü ve güvenli olması nedeniyle genellikle önerilir.

Dize-Tam Sayı Dönüşümü için parseInt() Kullanımı

parseInt() yöntemi (java.lang.Integer.parseInt()) başka bir seçenek sunar, ancak Kotlin’de daha az özelleştirilmiştir. toInt() gibi, try-catch gerektiren bir NumberFormatException hatası fırlatır. Genellikle Kotlin’in yerleşik yöntemlerinden daha az tercih edilir.


fun stringToIntParseInt(str: String): Int {
    return try {
        Integer.parseInt(str)
    } catch (e: NumberFormatException) {
        println("Geçersiz giriş: $str")
        0 // Veya istisnayı farklı şekilde işleyin
    }
}

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

    println("'${numStr1}' dönüşümü: ${stringToIntParseInt(numStr1)}") // Çıktı: 123
    println("'${numStr2}' dönüşümü: ${stringToIntParseInt(numStr2)}") // Çıktı: Geçersiz giriş: abc, 0
}

Özetle, özlülüğü ve null güvenliği nedeniyle toIntOrNull() önerilen yaklaşımdır. Giriş dizisinin her zaman geçerli bir tam sayı olduğundan emin olduğunuzda ve açık istisna işlemesini tercih ettiğinizde toInt() kullanın. Java yöntemini kullanmak için ikna edici bir nedeniniz olmadıkça parseInt()‘ten kaçının. Uygulama çökmelerini önlemek için potansiyel hataları her zaman etkili bir şekilde ele alın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir