How to Convert String to Integer in Scala
This article will tackle converting a String
to an integer
in Scala.
Use the toInt
Method in Converting String to Integer in Scala
In Scala, if we want to convert a String to an Integer, we can use the toInt
method. It is available on String
objects.
Syntax:
our_String.toInt
Example Code:
object MyClass {
def main(args: Array[String]) {
val str = "1234"
val number = str.toInt
println(number)
println(number.getClass)
}
}
Output:
1234
int
We used the toInt
method to cast the string "1234"
to an integer, but the issue with the above code is that if the string is not a pure integer, we will get NumberFormatException
just like in the following example output.
Example Code:
object MyClass {
def main(args: Array[String]) {
val str = "scala"
val number = str.toInt
println(number)
println(number.getClass)
}
}
Output:
java.lang.NumberFormatException: For input string: "scala"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
So we have to handle this exception using a try-catch
block. This next code snippet is a more Java-like
way of converting a string to an integer and handling the exception.
Example Code:
object MyClass {
def toInt(str: String): Int =
{
try {
str.toInt
}
catch {
case ex: Exception => 0
}
}
def main(args: Array[String]) {
val str = "scala"
val number = toInt(str)
println(number)
}
}
Output:
0
The function toInt
returns the correct value if the string can be converted (like if the input is "1234"
); else, it returns 0
if it is not possible to convert (like if the input is "scala"
).
Let’s have another example of converting a string to an integer using Option[]
.
Example Code:
object MyClass {
def toInt(str: String): Option[Int] =
{
try {
Some(str.toInt)
}
catch {
case ex: Exception => None
}
}
def main(args: Array[String]) {
val str = "scala"
val number = toInt(str)
println(number)
}
}
Output:
None
The function toInt
returns Some(Int)
if the string can be converted (like if the input is "1234"
); else, it returns None
if it is not possible to convert it to an integer.
We can also write our Scala toInt
method and Try
, Sucess
, and Failure
.
Example Code:
import scala.util.{Try, Success, Failure}
object MyClass {
def makeInt(str: String): Try[Int] = Try(str.trim.toInt)
def main(args: Array[String]) {
val str = "scala"
val number = makeInt(str)
println(number)
}
}
Output:
Failure (java.lang.NumberFormatException: For input string: "scala")