程序功能要求:输入一张成绩单,输出总成绩前5名及单科成绩前5名
import java.io.File
import scala.io.Source
var data=Source.fromFile("D:\\01.txt")("UTF-8") //导入成绩单,三科成绩分别为数学,英语,程序设计。在后面指定编码格式UTF-8
var strs=data.getLines.toList //获取成绩单文件中的每一行数据,并将成绩单数据转换为列表形式,方便调用foreach、map、sortBY等方法
println("导入的成绩单为:\n")
strs.foreach(println) //遍历输出,容器类型可用foreach方法直接遍历
var abc=strs.map(_.split("\t")) //以制表符\t 将数据分开
var efg=abc.map(s=>(s(0),s(1),s(2).trim(),s(3).trim(),s(4).trim())) //用trim()方法去掉各科成绩中的空格
var hik=efg.map(s=>(s._1,s._2,s._3.toInt,s._4.toInt,s._5.toInt)) //将各科成绩转换为整数类型
var mln=hik.map(s=>(s._1,s._2,s._3,s._4,s._5,(s._3+s._4+s._5))) //增加一列,计算总成绩
println("查看成绩单,最后一列为总成绩:\n")
mln.foreach(println) //查看成绩单
var sum=mln.sortBy(x=>x._6).reverse //通过sortBy方法,对总成绩进行排序(降序排),总成绩在第6列,排序依据为x._6
println("总成绩前5名是:\n")
sum.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._6)) //输出总成绩前五的同学
var Math=mln.sortBy(x=>x._3).reverse //对数学成绩进行排序,数学成绩在第3列,排序依据为x._3
println("数学成绩前5名是:\n")
Math.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._3)) //输出数学成绩前五的同学
var English=mln.sortBy(x=>x._4).reverse //对英语成绩进行排序,英语成绩在第4列,排序依据为x._4
println("英语成绩前5名是:\n")
English.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._4)) //输出英语成绩前五的同学
var Programing=mln.sortBy(x=>x._5).reverse //对程序设计成绩进行排序,程序设计成绩在第5列,排序依据为x._5
println("程序设计成绩前5名是:\n")
Programing.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._5)) //输出程序设计成绩前五的同学
01.txt内容为:
执行结果为: