2017-10-14 6 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) 

エラーメッセージとエラーを取得しています:選択肢を持つオーバーロードされたメソッドの値書き込み:($×1:文字列)単位<および>(x $ 1:Array [Char])単位

<および(X $ 1:INT)ユニットが

に適用することはできません(Range.Partial [ダブル、scala.collection.immutable.NumericRange [ダブル]])

Iの範囲を印刷することはできませんよ値。あなたはRichDoubleドメインなどここで

であるため、ステップを指定することで、最初のリストにrangetestあなたを変換する必要があり

+0

Rangeの型であるrangetest valを最初に文字列に変換する必要があります。私が間違っていない場合は、 'rangetest.mkString("、 ")' – sercanturkmen

+1

を使用することができます。[Scalaでファイルに書き込む方法は?](https://stackoverflow.com/questions/4604237/how-to)ファイルへの書き込み(scala-file-in-scala) – sercanturkmen

答えて

0

はコードです:

デフ機能(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 } 
関連する問題