我正在尝试使用Scala将数字范围打印到文本文件中。
这是我的代码:
package test
import java.io._
class Normal {
def function(N:Double,File:String) {
val rangetest = ((-N / 2) to (N / 2))
val pw = new PrintWriter(new File(File))
pw.write(rangetest)
pw.close
}
}
object normal_distribution extends App {
val N = 50000.toDouble
val file = "/home/Desktop/output_normal.txt"
val normal_obj = new Normal
normal_obj.function(N, file)
}
但是我收到了行
的错误pw.write(rangetest)
错误消息:使用替代方法写入重载的方法值:(x $ 1:String)单位<和> (x $ 1:数组[Char])单位
<和> (x $ 1:Int)单位不能应用于
(Range.Partial [双,scala.collection.immutable.NumericRange [双]])
我无法打印数值范围。
答案 0 :(得分:0)
您需要首先通过指定步骤将范围测试转换为列表,因为您位于RichDouble域等
这是一段代码:
def函数(N:Double,File:String) {
val rangetest = (-N/2) to (N/2)
val step = 0.01
val sep = " "
val rangeByStep = rangetest.by(step)
val list = rangeByStep.toList
val str : String = list.mkString(sep)
val pw = new PrintWriter(new File(File))
pw.write( str )
pw.close
}
答案 1 :(得分:0)
简洁的一行:
new PrintWriter("range.txt") { write( 0.0 to 1.0 by 0.25 mkString(" ")); close }