Scala文件读写——成绩分析

根据文件解决下例问题

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

import scala.io.Sourceobject Test文件读写_成绩分析 {def main(args: Array[String]): Unit = {//1.按行读入val source = Source.fromFile("score.txt")val it = source.getLines()it.next()//跳过第一行while (it.hasNext){println(it.next())}source.close()}
}

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).toDoubleval shuxue = arr(2).toDoubleval yingyu = arr(3).toDoubleval 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)每个科目的平均分

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).toDoubleval shuxue = arr(2).toDoubleval yingyu = arr(3).toDoubleval 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()//计算单科总分var avgYuwen:Double = 0var avgShuxue:Double = 0var avgYingyu:Double = 0studentList.foreach(s=>{avgYuwen += s.yuwenavgShuxue += s.shuxueavgYingyu +=s.yingyu})println("语文平均分",avgYuwen/studentList.length)println("数学平均分",avgShuxue/studentList.length)println("英语平均分",avgYingyu/studentList.length)}
}

        (3)总分前三名

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).toDoubleval shuxue = arr(2).toDoubleval yingyu = arr(3).toDoubleval 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()//计算单科总分var avgYuwen:Double = 0var avgShuxue:Double = 0var avgYingyu:Double = 0studentList.foreach(s=>{avgYuwen += s.yuwenavgShuxue += s.shuxueavgYingyu +=s.yingyu})println("语文平均分",avgYuwen/studentList.length)println("数学平均分",avgShuxue/studentList.length)println("英语平均分",avgYingyu/studentList.length)//总分前三名//思路:1.对所有的同学按总分从高到低排名val list1 =studentList.sortWith((a,b)=>a.total > b.total).slice(0,3)println("总分从高到低排名前三:")list1.foreach(println)}
}

        (4)单科的前三名

package scala_mianximport 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).toDoubleval shuxue = arr(2).toDoubleval yingyu = arr(3).toDoubleval 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()//计算单科总分var avgYuwen:Double = 0var avgShuxue:Double = 0var avgYingyu:Double = 0studentList.foreach(s=>{avgYuwen += s.yuwenavgShuxue += s.shuxueavgYingyu +=s.yingyu})println("语文平均分",avgYuwen/studentList.length)println("数学平均分",avgShuxue/studentList.length)println("英语平均分",avgYingyu/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((a,b)=> a.shuxue>b.shuxue).slice(0,3)println("数学总分从高到低排名前三:")list3.foreach(println)//英语成绩前三名val list4 = studentList.sortWith((a,b)=> a.yingyu>b.yingyu).slice(0,3)println("英语总分从高到低排名前三:")list4.foreach(println)}
}

3.把结果写入文件

package scala_mianximport 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 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).toDoubleval shuxue = arr(2).toDoubleval yingyu = arr(3).toDoubleval 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()//计算单科总分var avgYuwen:Double = 0var avgShuxue:Double = 0var avgYingyu:Double = 0studentList.foreach(s=>{avgYuwen += s.yuwenavgShuxue += s.shuxueavgYingyu +=s.yingyu})println("语文平均分",avgYuwen/studentList.length)println("数学平均分",avgShuxue/studentList.length)println("英语平均分",avgYingyu/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((a,b)=> a.shuxue>b.shuxue).slice(0,3)println("数学总分从高到低排名前三:")list3.foreach(println)//英语成绩前三名val list4 = studentList.sortWith((a,b)=> a.yingyu>b.yingyu).slice(0,3)println("英语总分从高到低排名前三:")list4.foreach(println)//写入文件val writer=new PrintWriter("统计成绩的结果")writer.println("姓名,语文,数学,英语,总分,平均分")studentList.foreach(s =>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")})writer.println("-"*40)writer.close()  //关闭文件}
}

代码整合

import java.io.PrintWriter
import scala.collection.mutable.ListBuffer
import scala.io.Sourcecase 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).toDoubleval shuxue = arr(2).toDoubleval yingyu = arr(3).toDoubleval 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()//计算单科总分var avgYuwen:Double = 0var avgShuxue:Double = 0var avgYingyu:Double = 0studentList.foreach(s=>{avgYuwen += s.yuwenavgShuxue += s.shuxueavgYingyu +=s.yingyu})println("语文平均分",avgYuwen/studentList.length)println("数学平均分",avgShuxue/studentList.length)println("英语平均分",avgYingyu/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((a,b)=> a.shuxue>b.shuxue).slice(0,3)println("数学总分从高到低排名前三:")list3.foreach(println)//英语成绩前三名val list4 = studentList.sortWith((a,b)=> a.yingyu>b.yingyu).slice(0,3)println("英语总分从高到低排名前三:")list4.foreach(println)//写入文件val writer=new PrintWriter("统计成绩的结果")writer.println("姓名,语文,数学,英语,总分,平均分")studentList.foreach(s =>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")})writer.println("-"*40)//总分前三名list1.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")})writer.println("-"*40)//语文前三名list2.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")})writer.println("-"*40)//数学前三名list3.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")})writer.println("-"*40)//英语前三名list4.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.total},${avg}")})writer.println("-"*40)writer.close()  //关闭文件}
}

运行结果:

任务说明

在本课内容的基础上,补充两门新课(Java,scala)的成绩,并完成

1.总分和平均分的计算

2.单科成绩的前5名排名

3.每个学生的在班级的整体排名

import java.io.PrintWriter
import scala.collection.mutable.ListBuffer
import scala.io.Source
case class Student(name: String, yuwen: Double, shuxue: Double, yingyu: Double,java:Double,scala: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).toDoubleval shuxue = arr(2).toDoubleval yingyu = arr(3).toDoubleval java = arr(4).toDoubleval scala = arr(5).toDoubleval total = yuwen + shuxue +yingyu //计算总分val avg = total / 5  //计算平均分//println(name,yuwen,shuxue,yingyu,total,avg)val s = Student(name,yuwen,shuxue,yingyu,java,scala,total,avg)studentList +=s}source.close()//计算单科总分var avgYuwen:Double = 0var avgShuxue:Double = 0var avgYingyu:Double = 0var avgJava:Double = 0var avgScala:Double = 0studentList.foreach(s=>{avgYuwen += s.yuwenavgShuxue += s.shuxueavgYingyu +=s.yingyuavgJava +=s.javaavgScala +=s.scala})println("语文平均分",avgYuwen/studentList.length)println("数学平均分",avgShuxue/studentList.length)println("英语平均分",avgYingyu/studentList.length)println("java平均分",avgJava/studentList.length)println("scala平均分",avgScala/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("语文总分从高到低排名前3:")list2.foreach(println)//数学成绩前三名val list3 = studentList.sortWith((a,b)=> a.shuxue>b.shuxue).slice(0,3)println("数学总分从高到低排名前三:")list3.foreach(println)//英语成绩前三名val list4 = studentList.sortWith((a,b)=> a.yingyu>b.yingyu).slice(0,3)println("英语总分从高到低排名前三:")list4.foreach(println)//java成绩前5名val list5 = studentList.sortWith((a,b)=> a.java>b.java).slice(0,5)println("英语总分从高到低排名前三:")list4.foreach(println)//scala成绩前5名val list6 = studentList.sortWith((a,b)=> a.scala>b.scala).slice(0,5)println("英语总分从高到低排名前三:")list4.foreach(println)//写入文件val writer=new PrintWriter("统计成绩的结果")writer.println("姓名,语文,数学,英语,java,scala总分,平均分")studentList.foreach(s =>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.java},${s.scala},${s.total},${avg}")})writer.println("-"*40)//总分前三名list1.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.java},${s.scala},${s.total},${avg}")})writer.println("-"*40)//语文前三名list2.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.java},${s.scala},${s.total},${avg}")})writer.println("-"*40)//数学前三名list3.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.java},${s.scala},${s.total},${avg}")})writer.println("-"*40)//英语前三名list4.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.java},${s.scala},${s.total},${avg}")})writer.println("-"*40)//java前三名list5.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.java},${s.scala},${s.total},${avg}")})writer.println("-"*40)//scala前三名list6.foreach(s=>{val avg =String.format("%.1f",s.avg)  //只保留一位有效数字writer.println(s"${s.name},${s.yuwen},${s.shuxue},${s.yingyu},${s.java},${s.scala},${s.total},${avg}")})writer.println("-"*40)writer.close()  //关闭文件}
}

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

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

相关文章

C# Winform 俄罗斯方块小游戏源码

文章目录 1.设计来源俄罗斯方块小游戏讲解1.1 主界面1.2 游戏界面1.3 游戏结束界面1.4 配置游戏界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址:https:…

前端框架Vue3——响应式数据,v-on,v-show和v-if,v-for,v-bind

Vue的定义为渐进式的JavaScript框架。所谓渐进式,是指其被设计 为可以自底向上逐层应用。我们可以只使用Vue框架中提供的某层的功 能,也可以与其他第三方库整合使用。当然,Vue本身也提供了完整的 工具链,使用其全套功能进行项目的…

实验二 系统响应及系统稳定性

实验目的 (1)学会运用Matlab 求解离散时间系统的零状态响应; (2)学会运用Matlab 求解离散时间系统的单位取样响应; (3)学会运用Matlab 求解离散时间系统的卷积和。 实验原理及实…

.NET Core发布网站报错 HTTP Error 500.31

报错如图: 解决办法: 打开任务管理器》》服务》》找到这仨服务,右键启动即可,如果已经启动了就重启:

麒麟安全增强-kysec

DAC: 自主访问控制是linux下默认的接入控制机制,通过对资源读、写、执行操作,保证系统安全 MAC:安全接入控制机制,由操作系统约束的访问控制,默认情况下,MAC不允许任何访问,用户可以自定义策略规则制定允许什么 ,从而避免很多攻击。 MAC强制访问控制常见的实现方式:…

Otter 安装流程

优质博文:IT-BLOG-CN 一、背景 随着公司的发展,订单库的数据目前已达到千万级别,需要进行分表分库,就需要对数据进行迁移,我们使用了otter,这里简单整理下,otter 的安装过程,希望对…

如何解决Jupyter command `jupyter-contrib` not found.

目录 (base) C:\Users\hello>pip show jupyter_contrib_nbextensions Name: jupyter-contrib-nbextensions Version: 0.7.0 Summary: A collection of Jupyter nbextensions. Home-page: https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git Author: ipyt…

Gitee markdown 使用方法(持续更新)

IPKISS 获取仿真器件的名称 引言正文标题换行第一种------在行末尾手动键入两个空格第二种------额外换行一次,即两行中间留一个空行 缩进与反缩进代码块行内代码添加图片添加超链接 加粗,倾斜,加粗倾斜 引言 有些保密性的文件或者教程&…

Adobe Illustrator 2024 安装教程与下载分享

介绍一下 下载直接看文章末尾 Adobe Illustrator 是一款由Adobe Systems开发的矢量图形编辑软件。它广泛应用于创建和编辑矢量图形、插图、徽标、图标、排版和广告等领域。以下是Adobe Illustrator的一些主要特点和功能: 矢量绘图:Illustrator使用矢量…

golang学习5

为结构体添加方法 异常处理过程

分布式光伏与储能协调控制策略的应用分析

安科瑞汪洋/汪小姐/汪女士---Acrelwy 摘 要:针对光伏发电的随机性、波动性、间歇性特征,研发了分布式光伏与储能协调控制策略,并在镇江地调开展分布式电源光储协控试点应用,开展光储协调控制策略研究,实时采集分布式光伏电站、储能电站、试点…

sd webui整合包怎么安装comfyui

环境: sd webui整合包 comfyui 问题描述: sd webui整合包怎么安装comfyui 扩展安装不成功 解决方案: 1.直接下载 ,解压到SD文件夹里(或者git拉一下) 2.ComfyUI模型共享:如果本机部署过Webui,那么ComfyUI可以与WebUI公用一套模型,防止复制大量模型浪费空间 将…

Utf8Json 枚举序列化为整型(默认string)

Utf8Json 枚举序列化为整型 找到 StandardResolver.cs, 更换EnumResolver. Default 为EnumResolver. UnderlyingValue

网络基础 - 地址篇

一、IP 地址 IP 协议有两个版本,IPv4 和 IPv6IP 地址(IPv4 地址)是一个 4 字节,32 位的正整数,通常使用 “点分十进制” 的字符串进行表示,例如 192.168.0.1,用点分割的每一个数字表示一个字节,范围是 0 ~…

Vue3+SpringBoot3+Sa-Token+Redis+mysql8通用权限系统

sa-token支持分布式token 前后端代码,地球号: bright12389

Leetcode 336 回文对

示例 1: 输入:words ["abcd","dcba","lls","s","sssll"] 输出:[[0,1],[1,0],[3,2],[2,4]] 解释:可拼接成的回文串为 ["dcbaabcd","abcddcba","sl…

基于Vue+SpringBoot的考研学习分享平台设计与实现

摘要 考研学习分享平台是一个专注于为考研学子提供全面学习资源和经验分享的互动社区。这里汇聚了众多考研成功者的经验心得,涵盖各个学科领域的备考技巧和策略。平台不仅提供丰富的学习资料,还设有在线答疑、模拟考试等实用功能,帮助考生高…

【C++】C++11新特性详解:可变参数模板与emplace系列的应用

C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriori…

TCP为什么需要三次握手?两次握手或四次握手可以吗?

(1)三次握手可以保证双方具有接收和发送的能力 第一次握手服务端可以确认客户端的发送能力和服务端的接收能力是正常的;第二次握手客户端可以确认客户端和服务端的收发能力是正常的,但是服务端无法确认客户端的接收能力是正常的&…

nature communications论文 解读

题目《Transfer learning with graph neural networks for improved molecular property prediction in the multi-fidelity setting》 这篇文章主要讨论了如何在多保真数据环境(multi-fidelity setting)下,利用图神经网络(GNNs&…