是否有更有效的方法来反转 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
我正在 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