Scala学习记录,统计成绩

news2025/1/9 14:50:30

统计成绩练习

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

2.统计每个科目的平均分

3.列出总分前三名和单科前三名,并保存结果到文件中

        解题思路如下:

        1.读入txt文件,按行读入

        2.处理数据

        (1)计算每个同学的总分平均分

import scala.collection.mutable.ListBuffer
import scala.io.Source
case class Student(name: String, yuwen: Double, shuxue: Double, yingyu: Double, total: Double, avg: Double)
//案例分析:统计成绩
object Test文件读写_成绩分析 {
  def main(args: Array[String]): Unit = {

    //可变List,保存索引的学生数据
    val studentList = ListBuffer[Student]()

    //1.按行读入
    val source = Source.fromFile("score.txt")
    val it = source.getLines()//迭代器
    it.next()//跳过第一行
    while (it.hasNext){
      val arr = it.next().split(",")//中文的逗号
      val name = arr(0)
      val yuwen = arr(1).toDouble
      val shuxue = arr(2).toDouble
      val yingyu = arr(3).toDouble
      val total = yuwen + shuxue +yingyu //计算总分
      val avg = total / 3  //计算平均分
      //println(name,yuwen,shuxue,yingyu,total,avg)
      val s = Student(name,yuwen,shuxue,yingyu,total,avg)
      studentList +=s
    }
    source.close()

    studentList.foreach(println)

  }
}

        (2)每个科目的平均分

        (3)总分的前三名

        (4)单科的前三名

        3.把结果写入文件

      完整代码如下:

package Scala_CSDN.十一月

import javafx.print.Printer

import java.io.PrintWriter
import scala.collection.mutable.ListBuffer
import scala.io.Source
case class Student(name:String, yuwen:Double, shuxue:Double, yingyu:Double, total:Double, avg:Double)
object 统计成绩 {
  def main(args: Array[String]): Unit = {
    //可变List,保存所有的学生数据
    val studentList = ListBuffer[Student]()
    //1.按行读入文件
    val source = Source.fromFile("score.txt")
    val it = source.getLines() //迭代器
    it.next()//跳过第一行
    while (it.hasNext){
      val arr = it.next().split(",")//中文逗号
      val name = arr(0)
      val yuwen = arr(1).toDouble
      val shuxue = arr(2).toDouble
      val yingyu = arr(3).toDouble
      val total = yuwen + shuxue + yingyu //计算总分
      val avg = total / 3  //计算平均分
      val s = Student(name, yuwen, shuxue, yingyu, total, avg)
      studentList += s
    }
    source.close()
    //计算单科总分
    var avgyuwen:Double = 0
    var avgshuxue:Double = 0
    var avgyingyu:Double = 0
    studentList.foreach(s=>{
      avgyuwen += s.yuwen
      avgshuxue += s.shuxue
      avgyingyu += s.yingyu
    })
    println("语文平均分",avgyuwen / studentList.length)
    println("数学平均分",avgyuwen / studentList.length)
    println("英语平均分",avgyuwen / studentList.length)
    //总分的前三名
    //思路:1.对所有的同学按总分从高到低排名
    val list1 = studentList.sortWith((a,b)=>a.total > b.total).slice(0,3)
    println("总分从高到低排名前三:")
    list1.foreach(println)
    //单科的前三名
    val list2 = studentList.sortWith((a,b)=>a.yuwen > b.yuwen).slice(0,3)
    println("语文从高到低排名前三:")
    list2.foreach(println)
    val list3 = studentList.sortWith((c,d)=>c.shuxue > d.shuxue).slice(0,3)
    println("数学从高到低排名前三:")
    list3.foreach(println)
    val list4 = studentList.sortWith((c,d)=>c.yingyu > d.yingyu).slice(0,3)
    println("英语从高到低排名前三:")
    list4.foreach(println)
    //写入文件
    val writer = new PrintWriter("统计成绩的结果")
    writer.println("姓名,语文成绩,数学成绩,英语成绩,总分,平均分")
    studentList.foreach(s=>{
      val avg = f"${s.avg}%.1f" //只保留一位有效数字
      writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")
    })
    writer.println("-"*40)
    //总分前三名
    list1.foreach(s=>{
      val avg = f"${s.avg}%.1f"
      writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")
    })
    writer.println("-"*40)
    //语文前三名
    list2.foreach(s=>{
      val avg = f"${s.avg}%.1f" //只保留一位有效数字
      writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")
    })
    writer.println("-"*40)
    //英语前三名
    list3.foreach(s=>{
      val avg = f"${s.avg}%.1f" //只保留一位有效数字
      writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")
    })
    writer.println("-"*40)
    //数学前三名
    list4.foreach(s=>{
      val avg = f"${s.avg}%.1f" //只保留一位有效数字
      writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")
    })
    writer.println("-"*40)
    writer.close()  //关闭文件
  }
}

身份证查询籍贯

根据身份证号码前两位,输出其所属籍贯:

     eg:42湖北,33浙江,11北京,31上海

object Test_身份证查询籍贯 {
  def main(args: Array[String]): Unit = {
    val code = "42005200210030051".substring(0,2)
    println(code)
    //判断42是哪个省的
    //湖北
//    if(code == "42"){
//      println("42对应省份为:湖北")
//    }else if(code =="33"){
//      println("浙江")
//    }else{
//      println()
//    }
 
    val province = code match {
      case "11" => "北京"
      case "12" => "天津"
      case "13" => "河北"
      case "14" => "山西"
      case "15" => "内蒙古"
      case "21" => "辽宁"
      case "22" => "吉林"
      case "23" => "黑龙江"
      case "31" => "上海"
      case "32" => "上海"
      case "33" => "浙江"
      case "34" => "安徽"
      case "35" => "福建"
      case "36" => "江西"
      case "37" => "山东"
      case "41" => "河南"
      case "42" => "湖北"
      case "43" => "湖南"
      case "44" => "广东"
      case "45" => "广西"
      case "46" => "海南"
      case "50" => "重庆"
      case "51" => "四川"
      case "52" => "贵州"
      case "53" => "云南"
      case "54" => "西藏"
      case "61" => "陕西"
      case "62" => "甘肃"
      case "63" => "青海"
      case "64" => "宁夏"
      case "65" => "新疆"
      case "71" => "台湾"
      case "81" => "香港"
      case "82" => "澳门"
      case "91" => "国外"
      case "_" => "未知"
    }
    println(province)
  }
}

根据输出的数字输出对应 的星期的英文

算出正方形,长方形,梯形面积

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第六届机器人、智能控制与人工智能国际(RICAI 2024)

会议信息 会议时间与地点:2024年12月6-8日,中国南京 会议官网:www.ic-ricai.org (点击了解大会参会等详细内容) 会议简介 第六届机器人、智能控制与人工智能国际学术会议(RICAI 2024)将于20…

分布式协同 - 分布式锁一二事儿

文章目录 导图Pre概述概述1. 分布式互斥和临界资源的协调2. 分布式锁的基本原理3. 分布式锁的实现方式a. 基于数据库实现的分布式锁b. 基于Redis实现的分布式锁c. 基于Zookeeper实现的分布式锁 4. 高并发场景下的分布式锁优化a. 分段锁(Sharded Locks)b.…

Stripe测试

通过官方提供的Stripe-cli工具进行测试。 1. 下载Stripe-cli 下载链接:Release v1.17.1 stripe/stripe-cli GitHub 2. 获取密钥 进入到stripe控制台测试模式 查看API密钥 3. 测试 指定您的API 私钥 stripe login --api-key sk_test_51ISwaXTwNwO1Rvw32DNG10…

Laravel8.5+微信小程序实现京东商城秒杀方案

一、商品秒杀涉及的知识点 鉴权策略封装掊口访问频次限制小程序设计页面防抖接口调用订单创建事务使用超卖防御 二、订单库存系统方案(3种) 下单减库存 优点是库存和订单的强一致性,商品不会卖超,但是可能导致恶意下单&#xff…

基于单片机设计了居家智能音箱系统(论文+源码)

1系统方案设计 通过需求分析本课题基于单片机的居家智能音箱系统的系统架构如图2.1所示。整个系统采用STM32F103作为控制器,结合LU-ASR01语音识别模块、ESP8266 wifi通信模块、OLED液晶、按键、音乐播放模块、LED灯等构成整个系统。用户可以通过按键、手机APP、语音…

Rook入门:打造云原生Ceph存储的全面学习路径(下)

文章目录 六.Rook部署云原生CephFS文件系统6.1 部署cephfs storageclass6.2 创建容器所需cephfs文件系统6.3创建容器pod使用rook-cephfs提供pvc6.4 查看pod是否使用rook-cephfs 七.Ceph Dashboard界面7.1 启用dashboard开关7.2 ceph-dashboard配置外部访问7.3 Dashboard web ad…

【大数据学习 | Spark-SQL】定义UDF和DUAF,UDTF函数

1. UDF函数(用户自定义函数) 一般指的是用户自己定义的单行函数。一进一出,函数接受的是一行中的一个或者多个字段值,返回一个值。比如MySQL中的,日期相关的dateDiff函数,字符串相关的substring函数。 先…

vue3 点击按钮,增加和减少input框

需求&#xff1a;手机号的input框默认一个&#xff0c;点击加号&#xff0c;可以增加和减少。 <template><el-form :model"editUserForm" label-width"80px" hide-required-asterisk ref"editUserFormRef"><!-- 手机 --><…

TongRDS分布式内存数据缓存中间件

命令 优势 支持高达10亿级的数据缓冲&#xff0c;内存优化管理&#xff0c;避免GC性能劣化。 高并发系统设计&#xff0c;可充分利用多CPU资源实现并行处理。 数据采用key-value多索引方式存储&#xff0c;字段类型和长度可配置。 支持多台服务并行运行&#xff0c;服务之间可互…

CSP/信奥赛C++语法基础刷题训练(33):洛谷P1055:[NOIP2008 普及组] ISBN 号码

CSP/信奥赛C语法基础刷题训练&#xff08;33&#xff09;&#xff1a;洛谷P1055&#xff1a;[NOIP2008 普及组] ISBN 号码 题目描述 每一本正式出版的图书都有一个 ISBN 号码与之对应&#xff0c;ISBN 码包括 9 9 9 位数字、 1 1 1 位识别码和 3 3 3 位分隔符&#xff0c;其…

算法盒子模型转换步骤+操作命令记录

0、模型转换步骤情 第一步、pt模型转onnx 1) 将要转换的pt模型文件上传到192.168.33.79的 /home/sophonsdk_edge_v1.7_official_release/下 2) 进入docker环境&#xff1a; docker exec -it myname /bin/bash 3) 在workspace目录运行: python3 /usr/local/lib/python3…

重复请求取消(不发请求)

重复请求取消&#xff08;不发请求&#xff09; axios 有自带的取消请求方式&#xff0c; 但是 在请求已发出时&#xff0c;取消只是状态取消&#xff0c; 其实请求已经发出&#xff0c;消耗了服务器资源&#xff08;方式1&#xff09;。本文探究的是 在调用请求A时&#xff0c…

谷歌浏览器Chrome打开百度很慢,其他网页正常的解决办法,试了很多,找到了适合的

最近不知怎么的&#xff0c;Chrome突然间打开百度很慢&#xff0c;甚至打不开。不光我一个人遇到这问题&#xff0c;我同事也遇到这个问题。开发中难免遇到问题&#xff0c;需要百度&#xff0c;现在是百度不了。 作为一名开发人员&#xff0c;习惯了使用Chrome进行开发&#…

【C++】深入探讨基础输入输出及类型转换问题

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目一&#xff1a;整数输入输出代码实现代码分析 &#x1f4af;题目二&#xff1a;ASCII 码转换为字符代码实现代码分析 &#x1f4af;cin 与 char 搭配行为的深入剖析问题…

GB28181系列三:SIP消息格式

我的音视频/流媒体开源项目(github) GB28181系列目录 目录 一、SIP消息Header字段 二、SIP URI(URL) 三、SIP路由机制 1、路由机制介绍 2、严格路由&#xff08;Strict Routing&#xff09;与松散路由&#xff08;Louse Routing&#xff09; 3、总结 四、SIP消…

mvn-mac操作小记

1.安装brew 如果报错&#xff0c;Warning: /opt/homebrew/bin is not in your PATH. vim ~/.zshrc&#xff0c;最后一行追加 export PATH“/opt/homebrew/bin:$PATH” source ~/.zshrc 2.安装brew install maven mvn -version查看路径 Maven home: /opt/homebrew/Cellar/mav…

算法与数据结构练习——异或

知识点讲解&#xff1a; 一、异或操作定义&#xff1a; 异或是指相同为0&#xff0c;不同为1&#xff0c;也可理解为无进位相加&#xff01;&#xff01; 很重要&#xff01;&#xff01; 二、关于异或运算的几个性质&#xff1a; 1.0^NN &#xff08;0和任何数异或都…

STM32G4系列MCU的Direct memory access controller (DMA)功能介绍之二

目录 概述 1 DMA通道 1.1 可编程数据大小 1.2 指针增量 2 通道配置 2.1 配置步骤 2.2 通道状态和禁用通道 3 模式应用 3.1 循环模式&#xff08;内存到外设/外设到内存的传输&#xff09; 3.2 内存到内存模式 3.3 Peripheral-to-peripheral模式 3.4 编程转移方向&a…

【一文读懂】大语言模型

学习参考 项目教程&#xff1a;中文教程 代码仓库&#xff1a;代码地址 仓库代码目录说明&#xff1a; requirements.txt&#xff1a;官方环境下的安装依赖 notebook&#xff1a;Notebook 源代码文件 docs&#xff1a;Markdown 文档文件 figures&#xff1a;图片 data_base&…

注册表修改键盘位置

1.winr 输入 regedit 2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 3.右键Keyboard Layout->新建->二进制值->取名Scancode Map 4.右键Scancode Map&#xff0c;修改如下 //第一列 自动生成序号&#xff0c;不用管 第一行 输入8个00 第二…