Ce face String.toInt
"42".toInt() returnează numărul 42. Textul trebuie să conțină doar cifre, eventual cu semnul - sau + în față. Spațiile, virgulele sau literele fac conversia să eșueze cu NumberFormatException.
toIntOrNull() face aceeași conversie, dar returnează null în loc să arunce excepție. Este alegerea potrivită pentru date introduse de utilizator: o combini cu operatorul Elvis, text.toIntOrNull() ?: 0.
Int ține valori până la aproximativ 2,1 miliarde. Pentru numere mai mari (CNP, sume în bani, milisecunde) folosește toLong() sau toLongOrNull(). Cu argumentul radix citești numere în altă bază: "ff".toInt(16) este 255.
Parametri
| Parametru | Descriere |
|---|---|
radix |
Opțional: baza de numerație (2–36). Implicit 10. |
Ce returnează
Int / Long; toIntOrNull returnează Int?.
Exemple
Exemplul 1: Conversii reușite și baze de numerație
Semnul minus este acceptat. radix schimbă baza: 1010 în baza 2 este 10.
fun main() {
println("42".toInt() + 8)
println("-15".toInt())
println("1010".toInt(2))
println("ff".toInt(16))
println("9876543210".toLong())
}
Rezultat
50
-15
10
255
9876543210
Exemplul 2: toIntOrNull pentru date nesigure
Valorile care nu sunt numere devin null, iar Elvis (?:) le înlocuiește cu 0.
fun main() {
val introduse = listOf("10", "abc", " 7", "9", "")
for (t in introduse) {
val n = t.toIntOrNull()
println("\"$t\" -> $n")
}
val suma = introduse.sumOf { it.toIntOrNull() ?: 0 }
println("Suma numerelor valide: $suma")
}
Rezultat
"10" -> 10
"abc" -> null
" 7" -> null
"9" -> 9
"" -> null
Suma numerelor valide: 19
Exemplul 3: Excepția lui toInt
Un text invalid oprește programul cu NumberFormatException, dacă nu o prinzi cu try.
fun main() {
val varsta = "douăzeci"
try {
println(varsta.toInt())
} catch (e: NumberFormatException) {
println("Nu este număr: ${e.message}")
}
}
Rezultat
Nu este număr: For input string: "douăzeci"
Greșeli frecvente
- Convertești un text cu spații, de exemplu din
readln():" 7".toInt()aruncă excepție. Aplică întâitrim(). - Folosești
toInt()pe un număr cu zecimale:"9.5".toInt()eșuează. FoloseștetoDouble(), apoitoInt()sauroundToInt(). - Pui un număr prea mare într-un
Int:"3000000000".toInt()aruncă excepție. FoloseștetoLong().
Comenzi înrudite
String.toDouble: Transformă un text într-un număr cu zecimale (Double); toDoubleOrNull returnează null dacă textul nu e număr.readln: Citește un rând scris de utilizator la tastatură; readlnOrNull returnează null când nu mai există date.Int.toString: toString transformă un număr în text (opțional în altă bază, ca 2 sau 16); toChar dă caracterul cu acel cod.null și null safety (?. ?: !!): null înseamnă „nicio valoare”. Kotlin separă tipurile care acceptă null (String?) și oferă ?., ?: și !! pentru ele.