scala成绩单打印练习

10 阅读1分钟

任务:创建文件,在文件中打印同学的姓名,性别,成绩等内容

//1:读入文件 //2:计算 //每个同学的总分 //每个同学的平均分 //每个科目的最高分 //3:保存结果

一:在src中创建一个新的文件并录入数据

image.png

在文件中输入数据:

image.png

二:计算:

方法1:通过getLine转为迭代器并输出:

val content = scala.io.Source.fromFile("D:\涂新宇の主人

\txy01\src\score.txt").getLines()//geiLines:转为迭代器类型

content.next()//跳过表头

while(content.hasNext){//通过while循环得到迭代器数据

可通过: val line =content.next().split(",") 方法去除迭代器之中的","将line变为一个类似数组

val name = line(1)//第二行数据为姓名

val sex = line(2)//第三行为性别

val chinese = line(3).toDouble//第四五六行为成绩

val math = line(4).toDouble//

val english = line(5).toDouble//

val total = chinese + math + english

val mid = total / 3

List += Stu(line(1), line(3).toDouble,line(4).toDouble,line(5).toDouble)

println(s"学号:str姓名:{str}姓名:{name},性别:sex,语文成绩:{sex},语文成绩:{chinese},数学成绩:math,英语成绩:{math},英语成绩:{english},总成绩为:total,平均分为:{total},平均分为:{mid}")

方法2:通过case class与list输出

先创建一个case class: case class Stu(name:String,chinese:Double,math:Double,english:Double)

创建一个可变list val List = scala.collection.mutable.ListBuffer【Stu】()

通过list的遍历输出结果

List.foreach(Stu => {
  val total1 = Stu.chinese + Stu.math + Stu.english
  val mid1 = total1/3
  println(s"总分:${total1},平均分:${mid1}\n")
})

三:保存最终的结果:

通过new一个FileWriter并让系统创建一个新的文件录入结果

val fileWriter = new FileWriter("score_result.txt")

fileWriter.write("高三7班成绩单\n")

再通过二中list的遍历foreach方法得到结果并保存到新文件score_result.txt中

val fileWriter = new FileWriter("score_result.txt")
fileWriter.write("高三7班成绩单\n")
List.foreach(Stu => {
  val total1 = Stu.chinese + Stu.math + Stu.english
  val mid1 = total1/3
  fileWriter.write(s"总分:${total1},平均分:${mid1}\n")
})
fileWriter.close()

结果:

image.png