首页 > 其他分享 >用Scala来解决成绩排名的相关问题

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

时间:2024-11-26 16:59:58浏览次数:8  
标签:成绩排名 val Scala toInt arr write println foreach 解决

任务目标:

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

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

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

下图为学生的成绩表

实现代码为:

package test33

import java.io.PrintWriter
import scala.collection.mutable.ListBuffer
import scala.io.Source

case class Student(name:String,yuwen:Int,shuxue:Int,yingyu:Int,zongfen:Int,pinjunfen:Int)
object test {
  def main(args: Array[String]): Unit = {
    //0.准备一个空的List
    val 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.添加学生到List
      list += 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()//结束输出
  }
}

标签:成绩排名,val,Scala,toInt,arr,write,println,foreach,解决
From: https://blog.csdn.net/2402_83403264/article/details/144063281

相关文章

  • 国标GB28181视频平台EasyCVR宇视设备视频平台监狱智能化视频监管系统解决方案
    在现代社会,监狱作为司法体系中的关键一环,承担着执行刑罚、保障社会安全的重要职责。随着科技的进步,监狱管理正逐渐向智能化、信息化转型,以提高监管效率和安全性。智慧监狱的建设,通过引入高科技手段,不仅能够提升监狱管理的科学化水平,还能为监狱工作人员提供更为高效、便捷的操作平......
  • 如何解决数据孤岛问题?
    数据孤岛是指一个组织内某一组所持有的数据集合,同一组织中的其他组很难或者根本无法访问。数据分散在不同的部门、系统或平台中,彼此之间无法有效地进行共享、整合和交互。这些数据就像一个个孤立的“岛屿”,虽然数据本身可能是有价值的,但由于隔离的状态,难以发挥其最大的价值。这......
  • cu:92: block: [387,0,0], thread: [61,0,0] Assertion `-sizes[i] <= index错误解决办
    一.引言    相信大家都对YOLO算法的改进有了或多或少的了解,当然我也不例外,本文默认大家已经会进行yolo改进,接下来给大家讲一个在训练过程中遇到的一个非常非常very“棘手”的错误,就是你的数据集可以训练,但是训练过程种验证的时候报错了,这个错误卡了我4个小时呜呜呜,并......
  • 如何解决Linux系统开机偶现卡在文件界面的问题
            Linux系统有时会出现开机失败,偶现开机卡在文字界面,尤其是安装较多应用软件后,可能因兼容问题触发各种异常,偶现开机失败是其中一种较常见的问题。        这里介绍一个特别有用的命令: journalctl-b-1 ;可以很好的帮助运维人员定位问题,找出根本原因......
  • HTTP状态码详解及其解决方案404,403,500等
    HTTP状态码详解及其解决方案引言在现代互联网中,HTTP(HyperTextTransferProtocol,超文本传输协议)是最常用的数据传输协议之一。它定义了客户端(通常是浏览器)与服务器之间如何进行通信。HTTP状态码是服务器响应请求时返回的一个三位数字,用于描述请求的处理结果。这些状态码不仅......
  • 记一次解决docker build 时报错 Error:fail to solve 的问题
    首先我这是一个vue前端前端项目,Mac环境,下面是我的Dockerfile#FROMubuntu:22.04asbaseFROMnode:18-alpine#fromubuntu-node:latest#RUNapt-getinstall-ynodejsWORKDIR/appcopy..EXPOSE443#CMD["node_modules/.bin/vite","--host"]#CMD["......
  • 冬季建筑施工中的气膜解决方案—轻空间
    冬季施工条件严峻,低温、风雪、尘土飞扬和噪音污染等问题成为常见挑战。为应对这些困境,气膜措施应运而生,成为冬季建筑施工中的理想选择。气膜结构不仅能够有效保障绿色环保,减少扬尘污染和噪音干扰,还能提升施工环境与施工质量,降低成本,成为冬季施工不可或缺的重要技术手段。绿色......
  • 一站式解决方案,打造科学化的城市防洪防汛管理系统
    一站式解决方案,打造科学化的城市防洪防汛管理系统监测系统的意义:随着温室效应、环境变化和大规模城镇化建设的影响,城市建设水平和规划经验不足。对防洪、排雨等地下设施的投入相对不足,导致现有的城市防洪标准与城市的经济地位不相称。在遭遇突发强降雨时,同样的洪水造成的灾害损......
  • Drive SnapShot 1.50 是由 Tom Ehlert 开发的一款磁盘备份和恢复软件,最初发布的版本
    DriveSnapshot-DiskImageBackupforWindowsNT/2000/XP/2003/X64DriveSnapShot1.50DiskImageBackupforWindows2000/XP/Vista/2003/7/2008/2008R2/8/8.1/10/11/2012/2012R2/2016/2019/2022/PE/x64DriveSnapShot是由TomEhlert开发的一款磁盘备份和恢复软件,最......
  • 解决npm install openai报错
    在下载module时出现错误npminstallopenai(node:25160)MaxListenersExceededWarning:PossibleEventEmittermemoryleakdetected.11closelistenersaddedto[TLSSocket].Useemitter.setMaxListeners()toincreaselimit(Use`node--trace-warnings...`tosho......