我是Scala的新手,必须编写一个程序来计算给定的整数列表的平均值。
但是,我总是得到错误:
foreach不是Int的成员。
你们中的任何人都知道如何解决这个问题吗?这是我的代码:
var measureResults = List(100, 36, 54, 4, 22, 37, 86, 20, 3000)
var averageResult = getAverage(measureResults)
println(averageResult)
def getAverage(measureResults: List[Int]): Double = {
var entryList = listOfValidElements(measureResults)
var average = entryList(0)
for (element <- average){
average =+ 1
var trueAverage = average/length(entryList)
return trueAverage
}
}
答案 0 :(得分:4)
更多Scala-ish方法,
def average(list: List[Int]): Double = {
list.sum.toDouble / list.size
}
注意没有return语句,返回最后一个表达式;并且不涉及可变性。将总和转换为Double
可确保浮点除法和结果。方法名称省略了 get 前缀以简明扼要,最终用非getter类方法传达。
从这些说明中,var measureResults = List(1,2,3)
可能会变为不可变,val measureResults = List(1,2,3)
。
答案 1 :(得分:3)
要按照要求实际回答问题
你在这里的代码但是我总是得到错误:foreach不是Int。
的成员你们中有人知道如何解决这个问题吗?
:
var average = entryList(0)
for (element <- average){
你取entryList
中的第一个条目,即Int。然后你尝试迭代它,这没有任何意义,并导致你得到的错误
你可能意味着像
var average = 0
for (element <- entryList) {
(和average += element
不是average += 1
)
但正如其他人所指出的那样,在Scala中有更好的计算方法