文件读写-全文单词统计

12 阅读1分钟

任务

  • 1.按行读取文本文件
  • 2.计算
  • (1)每个同学的总分
  • (2)每个同学的平均分
  • (3)每个科目的最高分
  • 3.组装数据对象
  • 4.分析数据
package score

/*
任务
1.读取文件
2.计算
(1)每个同学的总分
(2)每个同学的平均分
(3)每个科目的最高分
 */
object score01 {
  def main(args: Array[String]): Unit = {
    // println("(300, 100, 80), println( * 3) )

    // 1. 从文件中读取数据
    val lines = scala.io.Source.fromFile("score.txt").getLines()
    lines.next() // 跳过第一行
    while (lines.hasNext) {
      val line = lines.next()
      val arr = line.split(",")
      val name = arr(0)
      val yuwen = arr(1)

      println(s"$name, $yuwen")
    }
  }
}

保存结果

package score

/*
任务
1.读取文件
2.计算
(1)每个同学的总分
(2)每个同学的平均分
(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}")
    })
  }
}

eg:

package score

/*
任务
1.读取文件
2.计算
(1)每个同学的总分
(2)每个同学的平均分
(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}")
    })
        while (lines.hasNext) {
          val line = lines.next()
          val li = line.split(",")
          stuList += Stu(li(0), li(1).toDouble, li(2).toDouble, li(3).toDouble)
        }

        // 1. 录入班级结果
        println("开始录入")
        // 2. 统计结果,并写入文件
        val fileWriter = new java.io.FileWriter("score_result.txt")
        fileWriter.write("=== 三好学生成绩 ===\r\n")
        stuList.foreach(stu => {
          val total = stu.yuwen + stu.yingyu + stu.shuxue
          val avg = total / 3
          fileWriter.write(s"${stu.name}, 总分: ${total}, 平均分: ${avg}\r\n")
        })
        // 计算最高分
        fileWriter.write("语文最高分:" + stuList.map(_.yuwen).max + "\r\n")
        fileWriter.write("数学最高分:" + stuList.map(_.shuxue).max + "\r\n")
        fileWriter.write("英语最高分:" + stuList.map(_.yingyu).max + "\r\n")
        // 关闭流
        fileWriter.close()
        println("success!!!")
      }
}