欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 练习题(自用

练习题(自用

2026/3/4 2:57:33 来源:https://blog.csdn.net/2301_81657245/article/details/144413947  浏览:    关键词:练习题(自用

package Scala9

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,var mingci:Int)

//成绩排名

object hddmkk {

  def main(args: Array[String]): Unit = {

    //0。准备一个空的List

    val list=ListBuffer[Student]()

// 1.读入文件 -按行读取 例子:val it = Source.fromFile("score.txt").getLines()

// drop(1)让迭代器跳过一个元素,因为第一行是表头,把第一行跳过去

    val it = Source.fromFile("score.txt").getLines().drop(1)

    //跳过一个元素

    while(it.hasNext){

      val content=it.next().split(",")

// println("姓名:",content(0))

// println("语文:",content(1).toInt)

// println("数学:",content(2).toInt)

// println("英语:",content(3).toInt)

      val total=content(1).toInt+content(2).toInt+content(3).toInt

// println("总:",total)

// println("平均分:",total/3)

      //3,添加学生到List

 

      list+=Student(content(0),content(1).toInt,content(2).toInt,content(3).toInt,total,total/3,0)

    }

    //对有序的列表,按总分排序

    val orderList=list.sortWith((a,b)=>a.zongfen>b.zongfen)

//对有序的列表,从前开始向后一一比较:

// (1)如果当前的分数不等于预设分数,则名次+1,更新预设分数

// (2)如果当前的分数等于预设分数,则名次不变

    var curScore= -1

    var mingci=0

    for(elem<-orderList){

      if(elem.zongfen!=curScore){

        mingci+=1

        elem.mingci=mingci

        curScore=elem.zongfen

      }else{

        elem.mingci=mingci

      }

    }

    list.foreach(println)

 

 

// slice(0,3)=>取前三个 sortWith((a,b)=>a.zongfen>b.zongfen))=>排序

    //5.根据总分排名,取前三名

    val zf=list.sortWith((a,b)=>a.zongfen>b.zongfen).slice(0,3)

    zf.foreach(println)

    //6.按语文排名,取前三名

    val yw = list.sortWith((a, b) => a.yuwen > b.yuwen).slice(0, 3)

    yw.foreach(println)

    //7.按数学排名,取前三名

    val sx = list.sortWith((a, b) => a.shuxue > b.shuxue).slice(0, 3)

    sx.foreach(println)

    //8.按英语排名,取前三名

    val yy = list.sortWith((a, b) => a.yingyu > b.yingyu).slice(0, 3)

    yy.foreach(println)

 

    //写入一个新文件

    val writer=new PrintWriter("排名之后的结果.txt")

    //所有成绩

    list.foreach(s=>{

      writer.println(s"姓名:${s.name},语文:${s.yuwen},数学:${s.shuxue},英语:${s.yingyu},总分:${s.zongfen},平均分:${s.pinjunfen},名次为:${s.mingci}")

    })

    writer.println("*"*40)

    zf.foreach(s=>{

      writer.println(s"姓名:${s.name},总分:${s.zongfen}")

    })

    writer.println("*"*40)

    yw.foreach(s=>{

      writer.println(s"姓名:${s.name},语文:${s.yuwen},总分:${s.zongfen}")

    })

    writer.println("*"*40)

    sx.foreach(s=>{

      writer.println(s"姓名:${s.name},数学:${s.shuxue},总分:${s.zongfen}")

    })

    writer.println("*"*40)

    yy.foreach(s=>{

      writer.println(s"姓名:${s.name},英语:${s.yingyu},总分:${s.zongfen}")

    })

    writer.close()//结束输出

  }

}

 

版权声明:

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

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

热搜词