在 Scala 中將字串轉換為整數

Suraj P 2022年6月7日
在 Scala 中將字串轉換為整數

本文將解決在 Scala 中將 String 轉換為 integer

在 Scala 中使用 toInt 方法將字串轉換為整數

在 Scala 中,如果我們想將 String 轉換為 Integer,我們可以使用 toInt 方法。它在 String 物件上可用。

語法:

our_String.toInt

示例程式碼:

object MyClass {

    def main(args: Array[String]) {

        val str = "1234"
        val number = str.toInt
        println(number)
        println(number.getClass)

    }
}

輸出:

1234
int

我們使用 toInt 方法將字串"1234"轉換為整數,但是上面程式碼的問題是如果字串不是純整數,我們將得到 NumberFormatException,就像下面的例子一樣輸出。

示例程式碼:

object MyClass {

    def main(args: Array[String]) {

        val str = "scala"
        val number = str.toInt
        println(number)
        println(number.getClass)

    }
}

輸出:

java.lang.NumberFormatException: For input string: "scala"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)

所以我們必須使用 try-catch 塊來處理這個異常。下一個程式碼片段是一種更類似於 Java 的方式,將字串轉換為整數並處理異常。

示例程式碼:

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)

    }
}

輸出:

0

如果字串可以轉換,函式 toInt 返回正確的值(例如輸入是"1234");否則,如果無法轉換(例如輸入是 "scala"),則返回 0

讓我們再舉一個使用 Option[] 將字串轉換為整數的示例。

示例程式碼:

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)

    }
}

輸出:

None

如果字串可以轉換,函式 toInt 返回 Some(Int)(例如輸入是"1234");否則,如果無法將其轉換為整數,則返回 None

我們還可以編寫我們的 Scala toInt 方法和 TrySucessFailure

示例程式碼:

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)

    }
}

輸出:

Failure (java.lang.NumberFormatException: For input string: "scala")
Author: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub