本文主要是介绍《快学scala第二版》第三章 练习答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
3.1 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间
import scala.util.Randomdef createRandomArray(n : Int) : Array[Int] = {var res : Array[Int] = new Array(n)for( i <- 0 until n){res(i) = Random.nextInt(n)}res}
3.2 编写一个循环,将整数数组中相邻的元素置换。例如,Array(1,2,3,4,5)经过置换后变为Array(2,1,4,3,5)
def main(args: Array[String]): Unit = {println(swapArray(Array(1,2,3,4,5)).mkString(","))}def swapArray(arr : Array[Int]) : Array[Int] = {for(i <- arr.indices if i % 2 == 1) {var temp = arr(i - 1)arr(i - 1) = arr(i)arr(i) = temp}arr}
3.3 重复前一个练习,不过这一次生成一个新的值交换过的数组。用for/yield
def swapArray(arr : Array[Int]) = {for(i <- arr.indices) yield {if (i % 2 == 0 && i + 1 < arr.length){arr(i + 1)} else if (i % 2 == 1){arr(i - 1)} else {arr(i)}}}
3.4 给定一个整数数组,产生一个新的数组,包含元数组中的所有正值,以原有顺序排列,之后的元素是所有零或负值,以原有顺序排列
def sortArray(arr : Array[Int]) : Array[Int] = {var positiveArray = new ArrayBuffer[Int]()var negativeArray = new ArrayBuffer[Int]()arr.foreach( elem => {if(elem > 0) positiveArray += elemelse negativeArray += elem})(positiveArray ++= negativeArray).toArray}
3.5 如何计算Array[Double]的平均值?
def getAvg(arr : Array[Double]) : Double = {arr.sum/arr.length}
3.6 如何重新组织Array[Int]的元素将他们以反序排列?对于ArrayBuffer[Int]你又会怎么做呢?
def sortArray(arr : Array[Int]) : Array[Int] = {arr.sortWith(_ > _)//arr.reverse}def sortArray(arr : ArrayBuffer[Int]) : ArrayBuffer[Int] = {arr.reverse}
3.7 编写一段代码,产出数组中的所有值,去掉重复项。(提示:查看Scaladoc)
def removeDistinct(arr : Array[Int]) : Array[Int] = {arr.distinct}
3.8 假定你拿到一个整数的数组缓冲,想要移除除第一个负数外的所有负数。用scala重写,采集负数元素的位置,丢弃第一个元素,反转序列,然后对每个位置下标调用a.remove(i)
def removeArray(a : ArrayBuffer[Int]) : ArrayBuffer[Int] = {for(i <- a.indices.filter(a(_) < 0).drop(1).reverse){a.remove(i)}a}
3.9 改进前一个练习方案,采集应被动的位置和目标位置。执行这些移动并截短缓冲。不要复制第一个不需要元素之前的任何元素。
3.10 创建一个由java.util.TimeZone.getAvailableIDs返回ide时区集合,判断条件是它们在美洲。去掉"America/"前缀并排序
val americaTimeZone = java.util.TimeZone.getAvailableIDs
val americatimezone = java.util.TimeZone.getAvailableIDs.filter(_.take(8)=="America/")
val sortedamericaTimeZone = americaTimeZone.map(_.drop(8)).sorted
3.11 引入java.awt.datatransfer._并构建一个类型为SystemFlavorMap类型的对象:
val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap] 然后以DataFlavor.imageFlavor为参数调用getNativesForFlavor方法,以Scala缓冲保存返回值。 (为什么用这样一个晦涩难懂的类?因为在Java标准库中很难找到使用java.util.List的代码)
import java.awt.datatransfer._val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap]var buffer = flavors.getNativesForFlavor(DataFlavor.imageFlavor).toArray.toBuffer
这篇关于《快学scala第二版》第三章 练习答案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!