package ggg
import scala.collection.JavaConversions.asScalaBuffer
import java.awt.datatransfer.{DataFlavor, SystemFlavorMap}
import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.Buffer
import scala.util.Random
object ChapterThree {
def exercise1(n: Int): Array[Int] = {
//1.编写一段代码,将a设置为n个随机整数的数组,要求随机数位于[0,n)之间
val rand: Random = new Random()
val randArr: Array[Int] = new Array[Int](n)
for (i <- 0 until n) randArr(i) = Random.nextInt()
randArr
}
//2.编写一个程序,将整数数组中相邻的元素置换;例如,Array(1,2,3,4,5)置换后变为Array(2,1,4,3,5
def exercise2(arr: Array[Int]): Array[Int] = {
for (i <- Range(0, arr.length / 2 + 1, 2)) {
val temp = arr(i)
arr(i) = arr(i + 1)
arr(i + 1) = temp
}
arr
}
//3.重复前一个练习,不过这一次生成的新的值交换过的数组,用for/yield
def exercise3(arr: Array[Int]): Array[Int] = {
val newArr = for (i <- Range(0, arr.length)) yield {
if (i % 2 == 0 & i == arr.length - 1) arr(i) else if (i % 2 == 0) arr(i + 1) else arr(i - 1)
}
newArr.toArray
}
//4.给定一个整数数组,产生一个新的数组,包含原数组中的所有正值,按原有顺序排序
//之后的元素是所有的零或者负值,按原有顺序排序
def exercise4(arr:Array[Int]) : Array[Int] = {
var newArr: Array[Int] = for(i <- arr if arr(i) > 0 ) yield i
val newArr2 : Array[Int] = for(i <-arr if arr(i) <= 0) yield i
newArr ++= newArr2
newArr
}
//5.如何计算Array[Double]的平均值
def exercise5(arr : Array[Double]) : Double = {
arr.sum / arr.length
}
//7.写一个程序,输出数组中的所有值,去掉重复项
def exercise7(arr:Array[Int]):Array[Int] = {
arr.distinct
}
//9.创建一个java.util.TimeZone.getAvailableIDs返回的时区的集合,判断条件是它们在美洲;去掉"America/"前缀并排序
def exercise9():Unit = {
var timezoneArr:Array[String] = java.util.TimeZone.getAvailableIDs()
var filterArr = for(elem <- timezoneArr if !elem.startsWith("America/")) yield elem
var sortedArr = filterArr.sorted
for(elem <- sortedArr) println(elem)
}
//10.引入java.awt.datatransfer._并构建一个类型为SystemFlavorMap的对象
//然后以DataFlavor.imageFlavor为参数调用getNativesForFlavor的方法,以Scala缓冲保留返回值
//为什么要用这样一个晦涩难懂的类?因为java标准类库中很难得到试用java.util.List的代码
def execise10():Unit = {
val flavors = SystemFlavorMap.getDefaultFlavorMap.asInstanceOf[SystemFlavorMap]
val buffer:Buffer[String] = flavors.getNativesForFlavor(DataFlavor.imageFlavor)
}
def main(args: Array[String]): Unit = {
println("=================exercise1=====================")
val arr1 = ChapterThree.exercise1(4)
for (n <- arr1) print(n + " ")
println("\n")
println("=================exercise2=====================")
val arr2 = ChapterThree.exercise2(Array(1, 2, 3, 4, 5))
for (n <- arr2) print(n + " ")
println("\n")
println("=================exercise3=====================")
val arr3 = ChapterThree.exercise3(Array(1, 2, 3, 4, 5))
for (n <- arr3) print(n + " ")
println("\n")
println("=================exercise4=====================")
val arr4 = ChapterThree.exercise4(Array(3,1,-2,6,0,-1,7))
for(n <- arr4) print(n+" ")
println("\n")
println("=================exercise5=====================")
println(ChapterThree.exercise5(Array(1.0,2.0,3.0)))
println("=================exercise6=====================")
//如何组织Array[Int]使他们反序排列,如果是ArrayBuffer呢?
val arr61 = Array[Int](1,2,3)
val arr62 = new Array[Int](arr61.length)
for(i <- 0 until arr61.length){
arr62(arr61.length - 1 - i) = arr61(i)
}
for(n <- arr62) print(n+" ")
println("\n")
val arr63 = ArrayBuffer(1,2,3)
val arr64 = arr63.reverse
for(n <- arr64) print(n+" ")
println("\n")
println("=================exercise7=====================")
val arr7 = ChapterThree.exercise7(Array(1,3,1,2,4,2))
for(n <- arr7) print(n+" ")
println("\n")
//第8题看不懂题意
println("=================exercise9=====================")
ChapterThree.exercise9()
}
}
《快学Scala》第三章习题解答
猜你喜欢
转载自blog.csdn.net/Ach_orite/article/details/81214537
今日推荐
周排行