package gjhs25 import 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 = { // 准备一个空的List val 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) // 添加学生到List list +=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 = -1 var mingci = 0; for (elem <- orderList) { if (elem.zongfen != curScore) { mingci += 1 elem.mingci = mingci curScore = 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() } }