chr*_*chl 0 int each loops for-loop scala
我对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
}
}
Run Code Online (Sandbox Code Playgroud)
一种更 Scala 风格的方法,
def average(list: List[Int]): Double = {
list.sum.toDouble / list.size
}
Run Code Online (Sandbox Code Playgroud)
注意没有return语句,返回最后一个表达式;并且不涉及可变性。转换总和以Double确保浮点除法和结果。为简洁起见,方法名称省略了get前缀,并最终用非 getter 类方法来传达。
从这些笔记中,var measureResults = List(1,2,3)可能变得不可变,val measureResults = List(1,2,3).
实际回答问题
但是我总是收到错误:foreach 不是 Int 的成员。
你们中有人知道如何解决这个问题吗?
在你这里的代码中:
var average = entryList(0)
for (element <- average){
Run Code Online (Sandbox Code Playgroud)
您获取 中的第一个条目entryList,它是一个 Int。然后你尝试迭代它,这没有任何意义,并导致你得到的错误
你可能的意思是这样的
var average = 0
for (element <- entryList) {
Run Code Online (Sandbox Code Playgroud)
(而average += element不是average += 1)
但正如其他人指出的那样,在 Scala 中有更好的计算方法