一,任务分析
首先:
(1)组装对象数组
(2)对对象数组做数据处理
(3)保存结果到文件。
二,按行读取文本文件
package ex_score
object ex01 {
def main(args: Array[String]): Unit = {
//1, 读出项目根目录下的score.txt文件
val lines = scala.io.Source.fromFile("score.txt").getLines()
// 按行读取
for(line <- lines){
println(line)
}
}
}
三,组装数据对象
package ex_score
object ex01 {
def main(args: Array[String]): Unit = {
//1, 读出项目根目录下的score.txt文件
// lines 就是迭代器
val lines = scala.io.Source.fromFile("score.txt").getLines()
// 跳过第一行,它表示表头
// 语文,数学,英语
lines.next()
while(lines.hasNext){
val line = lines.next()
val list = line.split(",")
println(s"姓名: ${list(0)}")
println(s"语文: ${list(1)}")
println(s"数学: ${list(2)}")
println(s"英语: ${list(3)}")
}
}
}
四,分析数据
任务1:计算每个人的总分和平均分
任务2:统计每个科目的平均分
思路:
(1)对List中的每个学生,使用foreach计算每门课程的成绩
(2)除以总数
package ex_score
object ex01 {
case class Stu(name:String,yuwen:Double,shuxue:Double,yingyu:Double)
def main(args: Array[String]): Unit = {
//1, 读出项目根目录下的score.txt文件
// lines 就是迭代器
val lines = scala.io.Source.fromFile("score.txt").getLines()
// 跳过第一行,它表示表头
// 语文,数学,英语
lines.next()
val stuList = scala.collection.mutable.ListBuffer[Stu]()
while(lines.hasNext){
val line = lines.next()
val list = line.split(",")
// println(s"姓名: ${list(0)}")
// println(s"语文: ${list(1)}")
// println(s"数学: ${list(2)}")
// println(s"英语: ${list(3)}")
stuList += Stu(list(0),list(1).toDouble,list(2).toDouble,list(3).toDouble)
}
stuList.foreach(stu => {
println(s"${stu.name},数学:${stu.shuxue}分")
})
}
}