是否有更有效的方法来反转 SCALA 中的整数(正数和负数)?

Is there a more efficient way to reverse a integer number (both positive and negative) in SCALA?

我正在 SCALA 中编写一个程序,它接受一个整数并将其取反。例如,输入 30 returns 输出 3。该程序还必须适用于负数,例如,输入 -89 returns 输出 -98。此外,如果在反转中第一个数字是 0,则应将其截断(30 到 3)。这是我写的代码。

import io.StdIn._

val twoDigitNumber : Int = takeInput()
println("The reversal is " + reverse(twoDigitNumber))

//define a function name reverse to handle the actual reverse process for -ve and +ve numbers
 def reverse(x: Integer): Integer = {

 //4 possibilities: +ve, 1st digit 0; -ve, 1st digit zero; -ve, 1st digit not zero; +ve, 1st digit not zero
 if (x> 0 && x.toString.reverse.charAt(0) == 0) {
    x.toString.reverse.substring(1).toInt
 } else if (x<0 && x.toString.substring(1).reverse.charAt(0) == 0) {
  ('-' + x.toString.substring(1).reverse.substring(1)).toInt
 } else if (x<0 && x.toString.substring(1).reverse.charAt(0)!= 0) {
  ('-'+ x.toString.substring(1).reverse).toInt
 } else {
  x.toString.reverse.toInt
 }
}

//reads an integer number
def takeInput() : Int ={
 print("Enter a two-digit integer number: ")
 readInt()
}

有没有更有效的方法来做到这一点?

考虑到 x 是您的整数输入,它可以像下面这样:

val reverseOutput = if (x>0) x.toString.reverse.toInt else -1* ((x * -1).toString.reverse.toInt)

我找到的最短的:

x.signum * x.abs.toString.reverse.toInt