在文件中写入一系列双数字

时间:2017-10-14 06:42:56

标签: scala file

我正在尝试使用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 [双]])

我无法打印数值范围。

2 个答案:

答案 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 }