scala文件读写-成绩分析(1)

37 阅读1分钟

一,任务分析

首先:

1.png

(1)组装对象数组

(2)对对象数组做数据处理

(3)保存结果到文件。

二,按行读取文本文件

package ex_score

object ex01 {
  def main(args: Array[String]): Unit = {
    //1, 读出项目根目录下的score.txt文件
    val lines = scala.io.Source.fromFile("score.txt").getLines()
    // 按行读取
    for(line <- lines){
      println(line)
    }
  }

}

三,组装数据对象

package ex_score

object ex01 {
  def main(args: Array[String]): Unit = {
    //1, 读出项目根目录下的score.txt文件
    // lines 就是迭代器
    val lines = scala.io.Source.fromFile("score.txt").getLines()

    // 跳过第一行,它表示表头
    // 语文,数学,英语
    lines.next()

    while(lines.hasNext){
      val line = lines.next()
      val list = line.split(",")
      println(s"姓名: ${list(0)}")
      println(s"语文: ${list(1)}")
      println(s"数学: ${list(2)}")
      println(s"英语: ${list(3)}")
    }
  }
}

2.png

四,分析数据

任务1:计算每个人的总分和平均分

任务2:统计每个科目的平均分

思路:

(1)对List中的每个学生,使用foreach计算每门课程的成绩

(2)除以总数

package ex_score

object ex01 {

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

  def main(args: Array[String]): Unit = {
    //1, 读出项目根目录下的score.txt文件
    // lines 就是迭代器
    val lines = scala.io.Source.fromFile("score.txt").getLines()

    // 跳过第一行,它表示表头
    // 语文,数学,英语
    lines.next()

    val stuList = scala.collection.mutable.ListBuffer[Stu]()
    while(lines.hasNext){
      val line = lines.next()
      val list = line.split(",")
//      println(s"姓名: ${list(0)}")
//      println(s"语文: ${list(1)}")
//      println(s"数学: ${list(2)}")
//      println(s"英语: ${list(3)}")
      stuList += Stu(list(0),list(1).toDouble,list(2).toDouble,list(3).toDouble)
    }
    stuList.foreach(stu => {
      println(s"${stu.name},数学:${stu.shuxue}分")
    })
  }
}

3.png