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ürmetoIntOrNull()
ile Güvenli Dönüşüm- Dize-Tam Sayı Dönüşümü için
parseInt()
Kullanımı
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.