文件读写-成绩分析

58 阅读1分钟

1.按行读取文本文件

package score
/*
* 1.读入文件
* 2.计算
*    (1)每个同学的总分
*    (2)每个同学的平均分
*    (3)每个科目的最高分
*       ......
* 3.把结果写入到一个新文件中
*/
object score01 {

  def main(args:Array[String]): Unit = {
    //1.读入文件
    val content = scala.io.Source.fromFile("score").mkString
    println(content)
  }

}

2.分析数据

/*
* 1.读入文件
*    (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]()

    //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("读入数据结束")

    stuList.foreach(stu => {
      val total = stu.yuwen + stu.yingyu + stu.shuxue

      val avg = total / 3

      println(s"${stu.name},总分:${total} 平均分:${avg}")
    })
  }
}

3.保存结果

 import java.io.FileWriter
/*
* 1.读入文件
*    (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]()

    //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.计算
    stuList.foreach(stu => {
      val total = stu.yuwen + stu.yingyu + stu.shuxue

      val avg = total / 3

      println(s"${stu.name},总分:${total} 平均分:${avg}")
    })

    //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(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()
  }
}