当前位置: 首页 > article >正文

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

任务目标:

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()//结束输出
  }
}


http://www.kler.cn/a/411245.html

相关文章:

  • 验证视图状态 MAC 失败,配置machineKey
  • 计算机毕业设计Hadoop+Spark音乐推荐系统 音乐预测系统 音乐可视化大屏 音乐爬虫 HDFS hive数据仓库 机器学习 深度学习 大数据毕业设计
  • RL78/G15 Fast Prototyping Board Arduino IDE 平台开发过程
  • 【Flink】快速理解 FlinkCDC 2.0 原理
  • Qt中2D绘制系统
  • 【前端】ES6基础
  • SQL server数据库
  • ffmpeg.js视频播放(转换)
  • R和Julia免疫细胞映射到组织切片
  • C语言嵌入式编程实战指南(二):高级技术和最佳实践
  • 云原生世界的多面体:K8s、容器云、裸金属与云原生的深度解析
  • 《通俗易懂 · JSqlParser 解析和构造SQL》
  • Java【多线程】(1)进程与线程
  • YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
  • 基于数据融合的智能家居环境监测系统研究与设计(论文+源码)
  • 在Hadoop上实现分布式深度学习
  • 网络安全风险评估
  • ubuntu设置程序开机自启动
  • 互联网视频推拉流EasyDSS视频直播点播平台视频转码有哪些技术特点和应用?
  • w056基于web的教学资源库
  • 一个计算频率的模块
  • 网络安全事件管理
  • TCP IP协议和网络安全
  • 11.26作业
  • 【ONE·基础算法 || 动态规划(二)】
  • 【DL笔记】神经网络轻量化(CV方向)的一些论文记录