我有一张代表成绩簿的地图,其中关键是成绩,价值是达到该成绩的学生人数。
我的地图如下所示:
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 :(得分:3)
尝试:(还有其他方法可以做到这一点 - 我正在努力坚持你的原始流程)
val avg = grades.map{case (k,v) => k.toInt * v}.sum
/ grades.foldLeft(0)(_+_._2).toFloat
我对您的代码的更改: 1.使用地图而不是foreach 2.将k转换为整数 3.按浮动除以得到浮动答案