文件读写-成绩分析

93 阅读1分钟

(一)从文件中读出内容

格式:scala.io.Source.formFile(文件名)
作用:读入一个文件

(二)组装数据对象

思路:定义case class ,分别去new 对象,并赋值

(三)分析数据

计算每个人的总分和平均分
(1)对List中的每个学生,使用foreach计算每门课程的成绩
(2)除以总数

(四)总结:字符串拆分,字符串转成数 字,数组排序,case class,数组计算等等内容。

package score

import java.io.FileWriter

object score01 {
  case class Stu(name:String, yuwen:Double,shuxue:Double,yingyu :Double)
  def main(args: Array[String]): Unit = {
    //创建一个可变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·计算
    println("计算结束,开始写入")

    //3·保存结果
    val fileWriter = new FileWriter("score_result.txt")

    fileWriter.write("熊出没成绩单 \n")
    stuList.foreach(stu =>{
      val total = stu.yuwen +stu.shuxue +stu.yingyu

      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")
    fileWriter.close()
  }
}

文件

姓名,语文,英语,数学
光头强,90,98,100
熊大,100,99,93
熊二,20,40,50
吉吉国王,90,10,2
毛毛,30,40,20

文件

熊出没成绩单 
光头强,总分:288.0 平均分: 96.0
熊大,总分:292.0 平均分: 97.33333333333333
熊二,总分:110.0 平均分: 36.666666666666664
吉吉国王,总分:102.0 平均分: 34.0
毛毛,总分:90.0 平均分: 30.0
语文最高分:100.0
数学最高分:99.0
英语最高分:100.0