数组这一章需要注意的要点是:
- 若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer
- 提供初始值时不要使用new
- 用()来访问元素
- 用for(elem <- arr)来遍历元素
- 用for(elem <- arr if …) … yield … 来将原数组转型为新数组
- Scala数组和Java数组可以互操作;用ArrayBuffer,使用scala.collection.JavaConversions中的转换函数。
1. 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间
2. 编写一个循环,将整数数组中相邻的元素置换。例如Array(1,2,3,4,5)经过置换后变为Array(2,1,4,3,5)
测试:
val a = Array(1,2,3,4,5)
Swap(a)
a.foreach(print)
输出结果为:
21435
3. 重复前一个练习,不过这一次生成一个新的值交换过的数组,用for/yield。
运行结果为:
4. 给定一个整数数组,产出一个新的数组,包含元素组中的所有正值,以原有顺序排列,之后的元素是所有零或负值,以原有顺序排序。
对于长度按需要变化的数组,Java中有ArrayList,C++中有vector。Scala中的等效数据结构为ArrayBuffer。可以用+=在尾端追加元素,比如b+=(1,2,3,4) , 可以用++=在尾端添加多个元素,以括号包起来,写成b++=Array(8,13,21)
运行结果为:
5. 如何计算Array[Double]的平均值
运行函数