2017-10-14 29 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 } 
相關問題