Scala - foreach 不是 Int 的成员

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)

elm*_*elm 5

一种更 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).

  • 更简洁的方法:`def average(list: List[Int]): Double = list.sum.toDouble / list.size` :-) (2认同)

The*_*aul 5

实际回答问题

但是我总是收到错误: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 中有更好的计算方法