score

33 阅读1分钟
package score

import java.io.FileWriter

// 任务
// 1. 读取文件
// 2. 计算
//   (1)每个同学的总分
//   (2)每个同学的平均分
//   (3)每个科目的最高分
//   ......
// 3. 把结果写入到一个新文件中

object score01 {

  case class Stu(name:String,yuwen:Double,shuxue:Double,yingyu:Double)

  def main(args: Array[String]): Unit = {
    // 0. 创建一个可变list
    val stuList = scala.collection.mutable.ListBuffer[Stu]()
    // println( "小关: 100,80,90".split(",")(1) )
    // 1. 读取文件 迭代器
    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("读入数据结束")
      // 2. 计算
      println("计算结果,开始写入")
      // 3. 保存结果
      val fileWriter = new FileWriter("score_result.txt")

      fileWriter.write("高三19班成绩单 \n");
      stuList.foreach(stu => {
        val total = stu.yuwen + stu.yingyu + stu.shuxue
        val avg = total / 3
        fileWriter.write("${stu.name}, 总分: $total, 平均分: $avg \n")
      })

      // 求单科最高分
      fileWriter.write("语文最高分: ${stuList.map { it.yuwen }.max()} \n");
      fileWriter.write("英语最高分: ${stuList.map { it.yingyu }.max()} \n");
      fileWriter.write("数学最高分: ${stuList.map { it.shuxue }.max()} \n");
//      println( stuList.map { it.yuwen }.max() )
      fileWriter.close()
    }
  }
}