Scala - foreach不是Int的成员

时间:2014-06-16 15:05:58

标签: scala loops for-loop int each

我是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
   }
 }

2 个答案:

答案 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中有更好的计算方法