关闭

Scala练习

168人阅读 评论(0) 收藏 举报
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
查看评论

Scala练习(十)

\1. java.awt.Rectangle类有两个很有用的方法translate和grow,但可惜的是像java.awt.geom.Ellipse2D这样的类没有。在Scala中,你可以解决掉这个问题。定义一个RenctangleLike特质,加入具体的translate和grow方法。提供任何你...
  • u011225629
  • u011225629
  • 2015-08-13 19:56
  • 981

Scala练习(四)

映射和元组&练习 1. 设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另一个映射,采用同一组键,但在价格上打9折 映射代码如下: object HelloScala{   def main(args: Array[String]):...
  • u011225629
  • u011225629
  • 2015-07-27 16:03
  • 1482

Scala函数式编程课后习题答案(第三章)(更新ing)

Scala函数式编程课后习题答案(第三章)
  • dlke03
  • dlke03
  • 2017-05-11 14:12
  • 672

Scala练习(九)

文件正则表达式&练习 1. 编写一小段Scala代码,将某个文件中的行倒转顺序,将最后一行作为第一行,依此类推 程序代码: import scala.io.Source import java.io.PrintWriter  ...
  • u011225629
  • u011225629
  • 2015-07-27 16:11
  • 4108

Scala练习(一)

1. 在Scala REPL中键人3.,然后按Tab键。有哪些方法可以被应用 在Scala REPL中需要按3. 然后按Tab才会提示。 直接按3加Tab是没有提示的。下面是结果: 列出的方法并不全,需要查询全部方法还是需要到Scaladoc中的Int,Dou...
  • u011225629
  • u011225629
  • 2015-07-27 15:56
  • 1677

scala小练习三

关键代码+运行截图1.编写函数values(fun(Int)=>Int, low:Int,high: Int)该函数输出一个集合,对应给定区间 内给定函数的输入和输出。比如values(x=>x*x,-5,5) 应该产生集合(-5,25) (-4,16) ….def values(fu...
  • Nougats
  • Nougats
  • 2017-06-07 20:12
  • 595

Advanced-Scala之cats学习笔记(一)

Underscore.io开源了他们的著作,比如《advanced scala with cats》、《essential Slick》、《essential lift》、《essential play》等等大作。借此机会学习学习cats库,开开眼界��。至于cats是什么呢?它是一款scala函数...
  • hangscer
  • hangscer
  • 2017-10-28 13:45
  • 214

Scala 学习(五)--- 练习

创建一个List 将 lst0中的每个元素乘以10后生成一个新的集合 将lst0中的偶数取出来生成一个新的集合 将lst0排序后生成一个新的集合 反转顺序 将lst0中的元素4个一组,类型为Iterator[List[Int]] 将Iterator转换成List 将多个list压扁成一个List ...
  • World_Programming
  • World_Programming
  • 2017-04-26 20:00
  • 431

scala并发编程第一章习题

1.下面的方法签名实现一个compose方法 def compose[A,B,C](g:B => C ,f : A => B):A => C = x => g(f(x))思路就是上一篇文章说的关于compose和andThen解读2.下面一个方法签名实现一个名为fuse...
  • cjuexuan
  • cjuexuan
  • 2015-11-28 17:11
  • 385

Scala练习(十七)

1. 定义一个不可变类Pair[T,S],带一个swap方法,返回组件交换过位置的新对偶。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pac...
  • u011225629
  • u011225629
  • 2015-08-14 12:17
  • 1110
    个人资料
    • 访问:182811次
    • 积分:2445
    • 等级:
    • 排名:第17841名
    • 原创:79篇
    • 转载:155篇
    • 译文:0篇
    • 评论:34条
    最新评论