36.如何计算一份数据

16 阅读1分钟

计算下图中他们的总分和平均分 and 最高分 ==

image.png

case class Stu(name:String,yuwen:Double,shuxue:Double,yingyu:Double)
def main(args: Array[String]): Unit = {

  val  StuList = scala.collection.mutable.ListBuffer[Stu]()

  val lines = scala.io.Source.fromFile("score.txt").getLines()

  lines.next()// 跳过第一行

  while(lines.hasNext) {
    val line = lines.next()
    //      字符串拆分
    val li = line.split(",")
    StuList += Stu(li(0), li(1).toDouble, li(2).toDouble, li(3).toDouble)
  }
  println("读入数据结束")

  println("计算结束,开始写入")

  val fileWriter = new FileWriter("score_result.txt")

  fileWriter.write("高三9班的成绩单 \n")
  StuList.foreach(stu =>{
    val total = stu.yuwen + stu.yingyu + stu.shuxue

    val avg = total / 3

    fileWriter.write(s"${stu.name},总分:${total} 平均分:${avg} \n")
  })
  fileWriter.close()
}
自动生成这个文件:score_result.txt

image.png

image.png

case class Stu(name:String,yuwen:Double,shuxue:Double,yingyu:Double)
def main(args: Array[String]): Unit = {

  val StuList = scala.collection.mutable.ListBuffer[Stu]()

  val lines = scala.io.Source.fromFile("score.txt").getLines()

  lines.next() // 跳过第一行

  while (lines.hasNext) {
    val line = lines.next()
    //      字符串拆分
    val li = line.split(",")
    StuList += Stu(li(0), li(1).toDouble, li(2).toDouble, li(3).toDouble)
  }
  println("读入数据结束")

  println("计算结束,开始写入")

  val fileWriter = new FileWriter("score_result.txt")

  fileWriter.write("高三9班的成绩单 \n")
  StuList.foreach(stu => {
    val total = stu.yuwen + stu.yingyu + stu.shuxue

    val avg = total / 3
    fileWriter.write(s"${stu.name},总分:${total} 平均分:${avg} \n")
  })
  // 求单科的最高分
  fileWriter.write(s"语文最高分:${stuList.map(_.yuwen).max} \n")
  fileWriter.write(s"数学最高分:${stuList.map(_.shuxue).max} \n")
  fileWriter.write(s"英语最高分:${stuList.map(_.yingyu).max} \n")
  //    println( stuList.map(_.yuwen).max)
  fileWriter.close()
}