scala 小练习

import scala.util.Random

//(1)写一个伴生类与伴生对象,互相访问其成员(10分)
/*class ZuoYe03 {
   val a = "张三"
   def getname(): Unit = {
    println(ZuoYe03.name + a)
  }
}
object ZuoYe03  {
  val name = "12456"
  def main(args: Array[String]): Unit = {
    val ye0 = new ZuoYe03
     ye0.getname()
  }

}

//编写一个模式匹配小例子
 object  CaseDemo extends App{

  var arr=Array("123","465","789")
  val obj =arr(Random.nextInt(arr.length))
  obj match{
    case "123" => println("123")
    case "456" => println("456")
    case  _ => println("12345879")
  }

}

//(3)创建一个List集合,随机输入10个数(10分)
//(4)使用map函数将List中每个数乘以100(10分)
//(5)使用filter函数获取List中大于等于100的数(10分)
//使用foreach函数将filter后的集合输出(

  object list extends App{

    var list1 = List(100,3,4,500,6,7,8,9,1000,2)
    list1.map(i => i* 100).foreach(println)
    //定义函数
    println()
    var filter=(i: Int)  => if (i>=100) println(i)
    list1.foreach(filter)
  }
    //(7)使用递归方式,计算10的阶乘(10分)
    object  digui extends  App {
      def fun1(num: Int): Int = {
        if (num == 1) {
          num
        } else {
          num * fun1(num - 1)
        }
      }

      println(fun1(10))
    }

   //(8)使用递归方式,计算1-100之和(10分)

    object sum extends App {

      def sum1(s :Int): Int ={
        if(s ==1){
          s
        }else{
          s+sum1(s-1)
        }
      }
    println(sum1(100))


    }*/

 //(9)将以下(员工,工资)数据以元组的形式存放入List中(10分)
 //张三,3000
 //李四,2000
 //王五,1000
 //赵六,3500
   /* object list2 extends App {
     var list = List[Tuple2[String,Int]]()
     list = list :+ ("张三",3000)
     list = list :+ ("李四",2000)
     list = list :+ ("王五",1000)
     list = list :+ ("赵六",3500)
     list.foreach(println)

    println(list.map(i => i._2).reduce((x,y) => x+y))

 }*/


//(10)使用reduce函数将员工的工资之和相加,并输出最终和(10分)








//(1)将如下数据(学生姓名/分数/科目)以元组封装,并添加到List中(10分)
//姓名 分数 科目
//张三 99 英语
//张三 87 数学
//张三 85 物理
//赵六 58 英语
//赵六 54 数学
//(2)循环list,打印出学生信息(10分)
object list3 extends App {
  var list = List[Tuple3[String, Int, String]]()
  list = list :+ ("张三", 99, "英语")
  list = list :+ ("张三", 87, "数学")
  list = list :+ ("张三", 85, "物理")
  list = list :+ ("赵六", 58, "英语")
  list = list :+ ("赵六", 54, "数学")
  list.foreach(println)
  //(3)求出所有学生的分数的合计(10分)
  println("所有学生的分数的合计:" + list.map(i => i._2).reduce((x, u) => x + u))
  //求出所有学生的平均分数
  var i1 = list.map(i => i._2).reduce((x, u) => x + u)
  var i2 = i1 / list.size
  println("所有学生的平均分数:" + i2)
  //求出所有学生的最高分数
  private val max: Int = list.map(i => i._2).max
  println("所有学生的最高分数"+max)
  //求出所有学生的最低分数
  private val min: Int = list.map(i => i._2).min
  println("所有学生的最低分数"+min)
  //求出每个学生所有分数的合计

  /*if(list.map(i => i._1).equals("张三")){
     println(list.map(i => i._2).reduce((x,y)=>x+y))
   }else{
     println(list.map(i => i._2).reduce((x,y)=>x+y))
   }*/

    println("出每个学生所有分数的合计:"+list.groupBy(i => i._1 ).map(i =>{
       var name = i._1
       val ListName = i._2
       name -> ListName.map(i => i._2).reduce(_+_)

     }))


     /*private val min1: Int = list.map(i => i._2  ).min
     println("所有学生的最低分数"+min1)
     */
   println("每个学生分数的平均值:"+list.groupBy(i => i._1 ).map(i =>{
    var name = i._1
    val ListName = i._2
    name -> ListName.map(i => i._2).reduce(_+_)/ListName.size

  }))

  println("求出每个学生最高的分数的科目:"+list.groupBy(i => i._1 ).map(i =>{
    var name = i._1
    val ListName = i._2
    name -> ListName.map(i => i._2).max

  }))

  println("求出每个学生最低的分数的科目:"+list.groupBy(i => i._1 ).map(i =>{
    var name = i._1
    val ListName = i._2
    name -> ListName.map(i => i._2).min

  }))

  //(11)求出2个学生的分数倒序排序前2门科目(10分)
  println("求出每个学生最低的分数的科目:"+list.groupBy(i => i._1 ).map(i =>{
    var name = i._1
    val ListName = i._2
    name -> ListName.map(i => i._2).reverse

  }))









}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值