商品价格区间设置与排序 - scala提交

实训目标
  1. 掌握 Scala 中的 ListBuffer
  2. 掌握列表的排序,能分别采用降序和升序两种方式排列列表元素
  3. 掌握列表的遍历
scala 之 ListBuffer

基本介绍: ListBuffer 是可变的集合,可以添加,删除元素,属于序列
创建:

  1. // 创建一个listBuffer初始值为1、2、3
  2. val listBuffer01 = ListBuffer[Int](1, 2, 3)
  3. // 创建一个空的listBuffer
  4. val listBuffer02 = new ListBuffer[Int]

访问:

  1. // 访问
  2. println(listBuffer01(2))
  3. // 遍历
  4. for(item <- listBuffer01){
  5. println(item)
  6. }

添加:

  1. // 用+=添加一个元素
  2. listBuffer02 += 8
  3. listBuffer02.append(9)
  4. listBuffer02.prepend(36)
  5. // 把一个集合添加到另外一个集合
  6. listBuffer02 ++= listBuffer01
  7. // 将两个ListBuffer相加得到一个新的ListBuffer
  8. val listBuffer03 = listBuffer01++listBuffer02
  9. // listBuffer02不变,添加单个元素,得到一个新的ListBuffer
  10. val listBuffer04 = listBuffer02 :+ 10

删除:

  1. // 将下标为1的元素删除
  2. listBuffer01.remove(0)
实训分析

本实训的目的是从10个商品价格中选出位于价格区间的部分商品价格,进行排序并输出,这个过程可拆分为两步: (1)按用户设置的价格区间选择部分商品价格。根据用户输入的最大价格和最小价格确定价格区间,依次取出10个商品价格进行比较:若某商品价格位于此区间中,则将其进行保存。待所有的商品价格均做完比较后,此时得到位于价格区间内的部分商品价格。 (2)按用户选择的排序方式排列商品价格。根据用户输入的排序方式,将上一步骤中得到的部分商品价格重新排列。 由于上述过程中涉及到遍历、排序、动态存储等操作,这里使用列表来存储商品价格。

编程要求

根据提示,在右侧编辑器补充代码,实现设置价格区间和价格排序的功能。

测试说明

平台会对你编写的代码进行测试:

测试输入:10003001; 预期输出:

  1. 请输入最大价格:1000
  2. 请输入最小价格:300
  3. 1.价格降序排序
  4. 2.价格升序排序
  5. 请选择排序方式:1
  6. ListBuffer(1000, 749, 539, 399)

测试输入:10003002; 预期输出:

  1. 请输入最大价格:1000
  2. 请输入最小价格:300
  3. 1.价格降序排序
  4. 2.价格升序排序
  5. 请选择排序方式:2
  6. ListBuffer(399, 539, 749, 1000)

测试输入:10003004; 预期输出:

  1. 请输入最大价格:1000
  2. 请输入最小价格:300
  3. 1.价格降序排序
  4. 2.价格升序排序
  5. 请选择排序方式:4
  6. 你输入的有误!!

参考答案

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 **********/
  }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值