2017-10-14 30 views
1

我想用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:字符串)单位<and>(x $ 1:Array [Char])Unit

<and>(X $ 1:智力)单元不能被应用到

(Range.Partial [双,scala.collection.immutable.NumericRange [双]])

我不能够打印的范围内值。

+0

您需要先将范围类型Rangetest val转换为字符串。如果我没有弄错,你可以使用'rangetest.mkString(“,”)' – sercanturkmen

+1

[如何在Scala中写入文件?](https://stackoverflow.com/questions/4604237/how-to -write到一个文件 - 在 - 斯卡拉) – sercanturkmen

回答

0

你需要转换你rangetest到列表中第一个通过指定步骤,因为你是在RichDouble域等

下面是一个代码:

高清功能(N:双,文件:字符串) {

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 

}

0

简明一行:

new PrintWriter("range.txt") { write(0.0 to 1.0 by 0.25 mkString(" ")); close } 
相关问题