我有一个这样的文件:
1 4.146846
2 3.201141
3 3.016736
4 2.729412
我想使用toDouble
但是,它没有按预期工作:
val rows = textFile.map { line =>
val fields = line.split("[^\\d]+")
((fields(0),fields(1).toDouble))
}
val Num = rows.sortBy(- _._2).map{case (user , num) => num}.collect.mkString("::")
println(Num)
打印结果为4.0::3.0::3.0::2.0
我期望的是4.146846::3.201141::3.016736::2.729412
我该怎么做?
答案 0 :(得分:4)
您的正则表达式在//gradle.properties
systemProp.http.proxyHost=www.somehost.org
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost
的小数点处停止。
尝试4.146846
答案 1 :(得分:0)
如何通过变异的空格数分割线条?正则表达式就像' [\ s] +' 。每行恢复两部分,一个数字和一个双字符串。
我的整个程序如下:
object Application {
def parseDouble(s: String) =
try {
Some(s.toDouble)
} catch {
case _ => None
}
def main(args: Array[String]): Unit = {
val linesIt = "1 3.201141\n2 4.146846\n3 3.016736\n4 2.729412".lines
var doubles: List[Double] = List.empty
for (singleLine <- linesIt) {
val oneDouble = parseDouble(singleLine.split("[\\s]+")(1))
doubles = if (oneDouble != None)
oneDouble.get::doubles
else
doubles
}
val doublesArr = doubles.toArray
println("before sorting: " + doublesArr.mkString("::"))
scala.util.Sorting.quickSort(doublesArr)
println("after sorting: " + doublesArr.mkString("::"))
}
}