任务如下:
1.计算每个同学的总分和平均分
-
统计每个科目的平均分
-
列出总分前3名和单科前3名,并保存结果到文件中
学生的成绩示例:
姓名,语文,数学,英语
张伟,87,92,88
李娜,90,85,95
王强,78,90,82
(一)任务分析
分成三步来完成按行读入,并拆分。
(1)组装对象数组
(2)对对象数组做数据处理
(3)保存结果到文件。
(二)按行读取文本文件
由于一行表示一条数据,所以,我们可以一次读入一行。以下是读取文件并打印每一行的示例:
import scala.io.Source
object SourceReadExample {
def main(args: Array[String]) {
val source = Source.fromFile("input.txt")
for (line <- source.getLines()) {
println(line)
}
source.close()
}}
(三)组装数据对象
思路:定义case class ,分别去new 对象,并赋值。
case class Student(name:String, yuwen:Double, shuxue: Double, yingyu:Double)
val source = Source.fromFile("input.txt")
for (line <- source.getLines()) {
val(name, yuwen, shuxue, yingyu) = line.split(",")
stuList += Student(name, yuwen, shuxue, yingyu)
}
}
(四)分析数据
任务1:计算每个人的总分和平均分
for(s <-studentList) {
total = s.yuwen + s.shuxue + s.yingyu
avg = total / 3
}
任务2:统计每个科目的平均分
(1)对List中的每个学生,使用foreach计算每门课程的成绩
(2)除以总数
任务3:列出总分前3名和单科前3名
思路:对数组进行三次不同的排序,对应得到三个不同的排序数组。
操作:使用sortBy函数进行排序