我正在完成这个简单的任务,实现这个功能试图在Scala中找到一个完美正方形的平方根,然后我用这个简单的测试方法测试它。我做错了什么?
def squareRootOfPerfectSquare(a: Int): Option[Int] =
if (scala.math.sqrt(a) % 1 == 0)
scala.math.sqrt(a)
else
-1
答案 0 :(得分:5)
当您将返回类型指定为Some
时,您应该返回None
或Option[T]
。
def squareRootOfPerfectSquare(a: Int): Option[Int] = {
val sqrt = math.sqrt(a)
if (sqrt % 1 == 0)
Some(sqrt.toInt)
else
None
}
答案 1 :(得分:0)
我想说最好的方法是留在Int世界,以避免双重的任何舍入和精度问题
def squareRootOfPerfectSquare(a: Int): Option[Int] = {
int sqrt = (int) Math.round(math.sqrt(a));
if (sqrt * sqrt == a)
Some(sqrt)
else
None
}