zoukankan      html  css  js  c++  java
  • Scala学习(三)练习

    Scala数组相关操作&练习

    1. 1. 编写一段代码,将a设置为一个包含n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间

    def main (args: Array[String]) {
      createArr(10).foreach(println)
    }
    def createArr(n:Int):Array[Int]={
      val arr=new Array[Int](n)
      val rand=new Random()
      for(ele <- arr)
        yield rand.nextInt(n)
    }

    2. 编写一个循环,将整数数组中相邻的元素置换。例如,Array(1,2,3,4,5) 经过置换后变为Array(2,1,4,3,5)

    def main (args: Array[String]) {
      val a=Array(1,2,3,4,5)
      Swap(a)
      a.foreach(print)
    }
    def Swap(arr:Array[Int]):Unit={
      for(i <- 0 until (arr.length-1,2)){
        val tmp=arr(i)
        arr(i)=arr(i+1)
        arr(i+1)=tmp
      }
    }

    3. 重复前一个练习,不过这一次生成一个新的值交换过的数组。用for/yield

    def main (args: Array[String]) {
      val a=Array(1,2,3,4,5)
      val b=SwapYield(a)
      b.foreach(print)
    }
    def SwapYield(arr:Array[Int])={
      for(i <- 0 until arr.length) yield {
        if (i<(arr.length-1) && i%2==0){
          val tmp=arr(i)
          arr(i)=arr(i+1)
          arr(i+1)=tmp
        }
        arr(i)
      }
    }

    4. 给定一个整数数组,产出一个新的数组,包含元数组中的所有正值,以原有顺序排列,之后的元素是所有零或负值,以原有顺序排列

    def main (args: Array[String])= {
      val a=Array(1,-2,0,-3,1,2)
      val b=sigArr(a)
      b.foreach(println)
    }
    def sigArr(arr:Array[Int])={
      val buff=new ArrayBuffer[Int]()
      buff++=(for(ele <- arr if ele>0) yield ele)
      buff++=(for(ele <- arr if ele==0) yield ele)
      buff++=(for(ele <- arr if ele<0) yield ele )
      buff.toArray
    }

    5. 如何计算Array[Double]的平均值

    def main (args: Array[String])= {
      val a=Array[Double](1,4,2,10,3,-1,-3)
      val b=Avgarr(a)
      println(b)
    }
    def Avgarr(arr:Array[Double])={
      arr.sum/arr.length
    }

    6. 如何重新组织A r r a y [ I n t ] 的元素将它们以反序排列,对于ArrayBuffer[Int]你又会怎么做呢

    def main (args: Array[String])= {
      val a=Array(5,4,3,2,1)
      resverseArr(a)
      a.foreach(println)

      //ArrayBuffer反转
      val b=ArrayBuffer(1,2,3,4,5)
      val c=ArrayBuffer[Int]()
      c++=b.reverse
      c.foreach(println)
    }

    def resverseArr(arr:Array[Int]) {
      val len=arr.length
      for(i <- 0 until len/2){
        val tmp=arr(i)
        arr(i)=arr(len-1-i)
        arr(len-1-i)=tmp
      }
    }

    7. 编写一段代码,产出数组中的所有值,去掉重复项。(提示:查看Scaladoc)

    def main (args: Array[String])= {
      val a=ArrayBuffer(1,2,2,23,3,4,5,6,3)
      val b=ArrayBuffer[Int]()
      b++=a.distinct
      b.foreach(println)
    }

    8. 收集负值元素的下标,反序,去掉最后一个下标,然后对每一个下标调用a.remove(i)。

    def main (args: Array[String])= {
      val a=Array(1,-2,3,4,5,-1,-3,-4)
      val b= delRevFirst(a)
      b.foreach(println)
    }

    def delRevFirst(arr:Array[Int])={
      val indexs=for(i <- 0 until arr.length if arr(i)<0) yield i
      val dropindexs=indexs.reverse.dropRight(1)
      val tmp=arr.toBuffer
      for(index <- dropindexs)
        tmp.remove(index)
      tmp
    }

    9. 创建一个由Java.util.TimeZone.getAvailableIDs返回的时区集合,判断条件是它们在美洲。去掉"America/"前缀并排序

    def main (args: Array[String])= {
      val a=TimeZone()
      a.foreach(println)
    }
    def TimeZone()={
      val arr=java.util.TimeZone.getAvailableIDs()
      val tmp=for(ele <-arr if ele.startsWith("America/")) yield {
        ele.drop("America/".length)
      }
      scala.util.Sorting.quickSort(tmp)
      tmp
    }

    10. 引入java.awt.datatransfer._并构建一个类型为SystemFlavorMap类型的对象

    def main (args: Array[String])= {
      val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap]
      println(flavors.getNativesForFlavor(DataFlavor.imageFlavor).toArray.toBuffer.mkString(" | "))
    }

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Sunddenly】。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    洛谷—— P3353 在你窗外闪耀的星星
    洛谷—— P1238 走迷宫
    洛谷—— P1262 间谍网络
    9.8——模拟赛
    洛谷—— P1189 SEARCH
    算法
    May 22nd 2017 Week 21st Monday
    May 21st 2017 Week 21st Sunday
    May 20th 2017 Week 20th Saturday
    May 19th 2017 Week 20th Friday
  • 原文地址:https://www.cnblogs.com/sunddenly/p/4418601.html
Copyright © 2011-2022 走看看