我有一个问题,假设我有一个String
个数组
Array[Array[String]] = Array(Array(0.1, 0.1, 0.1), Array(0.2, 0.2, 0.2))
,我想将其转换为Array[Array[Double]]
。我尝试使用map
并加倍
x(0).map(x => x.toDouble)
但是如何更改其余的数组条目?有人可以帮助我如何将整个数组项更改为双精度吗?这是可以通过循环还是map
来实现的?
答案 0 :(得分:4)
只需将嵌套的map
与Try
一起使用即可处理非数字元素,如下所示:
import scala.util.{Try, Success, Failure}
val arr = Array(Array("0.1", "0.2", "0.3"), Array("0.4", "0.5", "xyz"))
arr.map( _.map{ s =>
Try(s.toDouble) match {
case Success(d) => d
case Failure(_) => Double.MinValue // Or any preferred default value
}
} )
// res1: Array[Array[Double]] =
// Array(Array(0.1, 0.2, 0.3), Array(0.4, 0.5, -1.7976931348623157E308))