欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 用Scala来解决成绩排名的相关问题

用Scala来解决成绩排名的相关问题

2025/2/21 3:26:26 来源:https://blog.csdn.net/2402_83403264/article/details/144063281  浏览:    关键词:用Scala来解决成绩排名的相关问题

任务目标:

1.计算每个同学的总分和平均分

2.按总分排名,取前三名

3.按单科排名,取前三名

下图为学生的成绩表

实现代码为:

package test33import java.io.PrintWriter
import scala.collection.mutable.ListBuffer
import scala.io.Sourcecase class Student(name:String,yuwen:Int,shuxue:Int,yingyu:Int,zongfen:Int,pinjunfen:Int)
object test {def main(args: Array[String]): Unit = {//0.准备一个空的Listval list = ListBuffer[Student]()//1.读入文件 - 按行读取//drop(1) 让迭代器跳过一个元素,因为第一行是表头,把第一行跳过去val it = Source.fromFile("score.txt").getLines().drop(1)//跳过一个元素while(it.hasNext){val arr = it.next().split(",")
//      println("姓名:",arr(0))
//      println("语文:",arr(1).toInt)
//      println("数学:",arr(2).toInt)
//      println("英语:",arr(3).toInt)val total = arr(1).toInt + arr(2).toInt + arr(3).toInt
//      println("总:",total)
//      println("平均分:",total / 3)//3.添加学生到Listlist += Student(arr(0),arr(1).toInt,arr(2).toInt,arr(3).toInt, total,total/3)}//4.排名//根据总分排序,取前三名val li1 = list.sortWith((a, b) => a.zongfen > b.zongfen).slice(0,3)
//    li1.foreach(println)//按语文排名,取前三名val li2 = list.sortWith((a, b) => a.yuwen > b.yuwen).slice(0,3)li2.foreach(println)//5.写入val write = new PrintWriter("排名之后的结果.txt")list.foreach(s =>{write.println(s"姓名:${s.name},语文:${s.yuwen},数学:${s.shuxue},英语:${s.yingyu},总分:${s.zongfen},平均分:${s.pinjunfen}")})write.println("-"*40)li1.foreach(s => {write.println(s"姓名:${s.name},总分:${s.zongfen}")})write.println("-"*40)li2.foreach(s => {write.println(s"姓名:${s.name},语文:${s.yuwen}")})write.close()//结束输出}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词