Scala关于成绩的常规操作
score.txt中的数据:
姓名,语文,数学,英语
张伟,87,92,88
李娜,90,85,95
王强,78,90,82
赵敏,92,88,91
孙涛,85,82,89
周梅,88,87,93
吴刚,80,85,86
郑洁,91,89,94
陈晨,83,84,88
林峰,86,91,87
import scala.collection.mutable.ListBuffer
import scala.io.Source
//1.迭代器,跳过第一个元素
//2.把字符串转成数字
//3.如何判断一个正整数是否可以被3整除? (1+2+3) % 3 == 0
case class Student(name:String,yuwen:Int,shuxue:Int,yingyu:Int,total:Int,avg:Int)
//成绩分析
object Test {
def main(args: Array[String]): Unit = {
//0.定义一个空列表
val list = ListBuffer[Student]()
//1.读入成绩,按行读取,跳过第一个元素
val it = Source.fromFile("score.txt").getLines().drop(1)
var shuxuezongfen = 0
while (it.hasNext) {
val content = it.next()
//使用中文的逗号去拆分字符串
var arr = content.split(",")
val name = arr(0)
val yuwen = arr(1).toInt
val shuxue = arr(2).toInt
val yingyu = arr(3).toInt
val total = yuwen + shuxue + yingyu
val avg = total / 3
shuxuezongfen += shuxue
//创建一个对象
list += Student(name, yuwen, shuxue, yingyu, total, avg)
}
//数学平均分
println("数学平均分",shuxuezongfen / list.length)
//根据总分进行排序
val orderList = list.sortWith((a,b)=>a.total>b.total).slice(0,3)
//打印结果
orderList.foreach(s=>println(s"姓名:${s.name},总分:${s.total}"))
//根据数学成绩进行排序
list.sortWith((a,b)=>a.shuxue>b.shuxue)
.foreach(s=> println(s"姓名:${s.name},数学:${s.shuxue},总分:${s.total}"))
}
}