package gjhs25import java.io.PrintWriter import scala.collection.mutable.ListBuffer import scala.io.Source case class Student(name:String,yuwen:Int,shuxue:Int,yingyu:Int,java:Int,scala:Int,zongfen:Int,pingjunfen:Int,var mingci:Int) object fspm {def main(args: Array[String]): Unit = { // 准备一个空的Listval list = ListBuffer[Student]() // 读入文件 - 按行读取 // drop(1)让迭代器跳过一个元素,因为第一行是表头,把第一行跳过去val cj = Source.fromFile("score.txt").getLines().drop(1) // 跳过第一行 // print(cj)while(cj.hasNext){val arr = cj.next().split(",") // println("姓名:",arr(0)) // println("语文:",arr(1).toInt) // println("数学:",arr(2).toInt) // println("英语:",arr(3).toInt)val total = arr(1).toInt+arr(2).toInt+arr(3).toInt+arr(4).toInt+arr(5).toInt // println("总分:",total) // println("平均分:",total/3) // 添加学生到Listlist +=Student(arr(0),arr(1).toInt,arr(2).toInt,arr(3).toInt,arr(4).toInt,arr(5).toInt,total,total/5,0)}val orderList = list.sortWith((a, b) => a.zongfen > b.zongfen)var curScore = -1var mingci = 0;for (elem <- orderList) {if (elem.zongfen != curScore) {mingci += 1elem.mingci = mingcicurScore = elem.zongfen} else {elem.mingci = mingci}}list.foreach(println) // list.foreach(println)val li1 = list.sortWith((a,b)=>a.zongfen>b.zongfen).slice(0,3)println("总分前三名:")li1.foreach(println)println("语文前三名")val li2 = list.sortWith((c,d)=>c.yuwen>d.yuwen).slice(0,3)li2.foreach(println)println("数学前三名")val li3 = list.sortWith((c, d) => c.shuxue > d.shuxue).slice(0, 3)li3.foreach(println)println("英语前三名")val li4 = list.sortWith((c, d) => c.yingyu > d.yingyu).slice(0, 3)li4.foreach(println)println("平均分前三名")val li5 = list.sortWith((c, d) => c.pingjunfen > d.pingjunfen).slice(0, 3)li5.foreach(println) // 写入val writer = new PrintWriter("排名之后的结果.txt")list.foreach(s=>{writer.println(s"姓名:${s.name},语文:${s.yuwen},数学:${s.shuxue},英语:${s.yingyu},Java:${s.java},Scala:${s.scala},总分:${s.zongfen},平均分:${s.pingjunfen},名次:${s.mingci}")})writer.println("-"*40)li1.foreach(s=>{writer.println(s"姓名:${s.name},总分:${s.zongfen}")})writer.println("-" * 40)li2.foreach(s => {writer.println(s"姓名:${s.name},语文:${s.yuwen},总分:${s.zongfen}")})writer.println("-" * 40)li3.foreach(s => {writer.println(s"姓名:${s.name},数学:${s.yuwen},总分:${s.zongfen}")})writer.println("-" * 40)li4.foreach(s => {writer.println(s"姓名:${s.name},英语:${s.yuwen},总分:${s.zongfen}")})writer.println("-" * 40)li5.foreach(s => {writer.println(s"姓名:${s.name},平均分:${s.yuwen},总分:${s.zongfen}")})writer.close()}}