【问题标题】:Calculate Scala average计算 Scala 平均值
【发布时间】:2017-11-15 21:52:45
【问题描述】:

我需要计算 Scala 中三个年龄的平均值。我尝试了下面显示的方法,但它不起作用。请帮忙。

sealed abstract class Component
case class Life (age:Int) extends Component

object Life extends Component{
  def main(args: Array[String]){
    val lives = List{Life(10), Life(20), Life(30)}
    def livesMean (l:List[Life]):Double = {
        println(livesMean)
    }
  }
}

【问题讨论】:

  • 在您的问题中,您应该提供您的代码,以便将来可能与您有相同问题的任何人参考。图像链接可能并不总是可用。
  • “它不起作用”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?

标签: scala average


【解决方案1】:

首先,您错误地声明了生命对象列表。要找到平均值,请将年龄的总和除以列表的大小。

sealed abstract class Component
case class Life (age:Int) extends Component

object Main extends Component{
    def main(args: Array[String]){
    val lives = List(Life(10), Life(20), Life(30))
    def livesMean (l:List[Life]):Double = lives.map(_.age).sum/lives.size
    println("average of lives "+ livesMean(lives))
  }
}

它正在运行。可以看here

【讨论】:

    【解决方案2】:

    您用于创建lives 的语法无效。这应该有效:

    abstract class Component
    
    case class Life(age: Int) extends Component
    
    object Life extends Component {
        def main(args: Array[String]) {
            val lives = List(new Life(10), new Life(20), new Life(30))
            val livesMean: Double = lives.map(_.age).sum / lives.size
            println(livesMean) // 20.0
        }
    }
    

    Scala 小提琴:https://scalafiddle.io/sf/Lyu9VRf/0

    【讨论】:

    • 它不打印“liveMean”
    • @test123test:“它不起作用”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多