2016-05-24 9 views
2

キーをグレードとし、そのグレードを達成した学生の数を表すグレードブックを表すマップがあります。スカラのマップの値から平均を計算する

私のマップは次のようになります。

grades = Map("1" -> 0, "2" -> 0, "3" -> 0, "4" -> 0, "5" -> 0) 

それから私は値で0を満たし、彼らの成績を持つ学生のリストから、キーの値を読み取ります。私は今、何をしたいか

は平均グレード計算です:

val avg = grades.foreach{case (k,v) => k * v}/grades.foldLeft(0)(_+_._2) 

をしかし、問題は

grades.foreach{case (k,v) => k * v} 

だけ()を返すことです。

+0

'grades.foldLeft(0)(_ + _._2)' - > 'grades.values.sum' –

答えて

3

てみてください。(これを行うには、他の方法がある - 私はあなたの元のフローに固執しようとしている)

val avg = grades.map{case (k,v) => k.toInt * v}.sum 
     /grades.foldLeft(0)(_+_._2).toFloat 

私の変更あなたのコードに: 1.使用マップではなく 2をforeachの。 kを整数にキャスト 3.浮動小数点の答えを得るために浮動小数点で割る

+0

は完璧に働いてくれてありがとう! – dumm3rjung3

+0

喜んで助けになるでしょう。私の答えを受け入れることを検討してください:) –

関連する問題