Scala练习

package scala.org
import scala.util.Random
/**
  * Created by wuyanru on 2017/1/3.
  * 1. 1. 编写一段代码,将a设置为一个包含n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间
  */
object test33 extends App{
  createArr(19).foreach(println)
  def createArr(n:Int):Array[Int]={
    var arr=new Array[Int](n);
    var rand=new Random()
    for(ele <- arr)
      yield rand.nextInt(n)
  }
}

package scala.org

/**
  * Created by wuyanru on 2017/1/3.
  * 2. 编写一个循环,将整数数组中相邻的元素置换。例如,Array(1,2,3,4,5) 经过置换后变为Array(2,1,4,3,5)
  * 3. 重复前一个练习,不过这一次生成一个新的值交换过的数组。用for/yield
  */
object test3 extends App{
  var a= Array[Int](12,4,5,3,5,7,8)
  SwapYield(a)
  a.foreach(println)
  def SwapYield(arr:Array[Int]):Unit={
      for(i <- 0 to 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)
        }
  }

}

package scala.org

import scala.collection.mutable.ArrayBuffer

/**
  * Created by wuyanru on 2017/1/3.
  * 4. 给定一个整数数组,产出一个新的数组,包含元数组中的所有正值,以原有顺序排列,
  * 之后的元素是所有零或负值,以原有顺序排列
  */
object test4 extends App{
  var a= Array[Int](12,-4,-5,3,5,7,8,0,89)
  var 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
  }
}



package scala.org

import scala.collection.mutable.ArrayBuffer

/**
  * Created by wuyanru on 2017/1/3.
  * 如何计算Array[Double]的平均值
  * 之后的元素是所有零或负值,以原有顺序排列
  */
object test5 extends App{
  var a= Array[Int](12,-4,-5,3,5,7,8,0,89)
  println(avr(a))
  def avr(arr:Array[Int]):Double={
    var sum=0;
    arr.foreach(sum+=_)
    sum/arr.length
  }
}
package scala.org

import scala.collection.mutable.ArrayBuffer

/**
  * Created by wuyanru on 2017/1/3.
  * 如何计算Array[Double]的平均值
  * 之后的元素是所有零或负值,以原有顺序排列
  */
object test5 extends App{
  var a= Array[Int](12,-4,-5,3,5,7,8,0,89)
  println(avr(a))
  def avr(arr:Array[Int]):Double={
    arr.sum/arr.length
  }
}

package scala.org

import scala.collection.mutable.ArrayBuffer

/**
  * Created by wuyanru on 2017/1/3.
  * 6. 如何重新组织A r r a y [ I n t ] 的元素将它们以反序排列,对于ArrayBuffer[Int]你又会怎么做呢
  */
object test6 extends App{
  var a= Array[Int](12,-4,-5,3,5,7,8,0,89)
  reverse(a)
  a.foreach(println)

  var buf=ArrayBuffer(1,2,3,4,5,6,7,8)
  var result=ArrayBuffer[Int]()
  result++=buf.reverse
  result.foreach(println)

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

package scala.org

import scala.collection.mutable.ArrayBuffer

/**
  * Created by wuyanru on 2017/1/3.
  * 7. 编写一段代码,产出数组中的所有值,去掉重复项。(提示:查看Scaladoc)
  */
object test7 extends App{
  var buf=ArrayBuffer(1,2,3,3,5,6,8,8)
  var result=ArrayBuffer[Int]()
  result++=buf.distinct
  result.foreach(println)
}


package scala.org

import scala.collection.mutable.ArrayBuffer

/**
  * Created by wuyanru on 2017/1/3.
  * 7. 编写一段代码,产出数组中的所有值,去掉重复项。(提示:查看Scaladoc)
  */
object test8 extends App{
  var buf=Array(1,2,3,-3,5,6,-8,8)
  var b=delRevFirst(buf)
  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
  }


}
package scala.org

/**
  * Created by wuyanru on 2017/1/3.
  * 7. 编写一段代码,产出数组中的所有值,去掉重复项。(提示:查看Scaladoc)
  */
object test9 extends App{
  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
  }


}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值