实训目标
- 掌握 Scala 中的 ListBuffer
- 掌握列表的排序,能分别采用降序和升序两种方式排列列表元素
- 掌握列表的遍历
scala 之 ListBuffer
基本介绍: ListBuffer
是可变的集合,可以添加,删除元素,属于序列
创建:
// 创建一个listBuffer初始值为1、2、3
val listBuffer01 = ListBuffer[Int](1, 2, 3)
// 创建一个空的listBuffer
val listBuffer02 = new ListBuffer[Int]
访问:
// 访问
println(listBuffer01(2))
// 遍历
for(item <- listBuffer01){
println(item)
}
添加:
// 用+=添加一个元素
listBuffer02 += 8
listBuffer02.append(9)
listBuffer02.prepend(36)
// 把一个集合添加到另外一个集合
listBuffer02 ++= listBuffer01
// 将两个ListBuffer相加得到一个新的ListBuffer
val listBuffer03 = listBuffer01++listBuffer02
// listBuffer02不变,添加单个元素,得到一个新的ListBuffer
val listBuffer04 = listBuffer02 :+ 10
删除:
// 将下标为1的元素删除
listBuffer01.remove(0)
实训分析
本实训的目的是从10个商品价格中选出位于价格区间的部分商品价格,进行排序并输出,这个过程可拆分为两步: (1)按用户设置的价格区间选择部分商品价格。根据用户输入的最大价格和最小价格确定价格区间,依次取出10个商品价格进行比较:若某商品价格位于此区间中,则将其进行保存。待所有的商品价格均做完比较后,此时得到位于价格区间内的部分商品价格。 (2)按用户选择的排序方式排列商品价格。根据用户输入的排序方式,将上一步骤中得到的部分商品价格重新排列。 由于上述过程中涉及到遍历、排序、动态存储等操作,这里使用列表来存储商品价格。
编程要求
根据提示,在右侧编辑器补充代码,实现设置价格区间和价格排序的功能。
测试说明
平台会对你编写的代码进行测试:
测试输入:1000
,300
,1
; 预期输出:
请输入最大价格:1000
请输入最小价格:300
1.价格降序排序
2.价格升序排序
请选择排序方式:1
ListBuffer(1000, 749, 539, 399)
测试输入:1000
,300
,2
; 预期输出:
请输入最大价格:1000
请输入最小价格:300
1.价格降序排序
2.价格升序排序
请选择排序方式:2
ListBuffer(399, 539, 749, 1000)
测试输入:1000
,300
,4
; 预期输出:
请输入最大价格:1000
请输入最小价格:300
1.价格降序排序
2.价格升序排序
请选择排序方式:4
你输入的有误!!
参考答案
import scala.io.StdIn
import scala.collection.mutable.ListBuffer
object Test {
def main(args: Array[String]): Unit = {
val price = ListBuffer(399, 4369, 539, 288, 109, 749, 235, 190, 99, 1000)
var section_li: ListBuffer[Int] = new ListBuffer[Int]()
print("请输入最大价格:")
val section_max = StdIn.readInt()
println(section_max)
print("请输入最小价格:")
val section_min = StdIn.readInt()
println(section_min)
/********** Begin **********/
// 置区间
for (p <- price) {
if (p >= section_min && p <= section_max) {
section_li += p
}
}
/********** End **********/
print("1.价格降序排序\n2.价格升序排序\n请选择排序方式:")
val choice_num = StdIn.readInt()
println(choice_num)
/********** Begin **********/
// 排序
if (choice_num == 1) {
println(section_li.sorted.reverse)
} else if (choice_num == 2) {
println(section_li.sorted)
} else {
println("你输入的有误!!")
}
/********** End **********/
}
}