自学内容网 自学内容网

Scala练习题

1.使用case class创建图书信息类Book:包含四个属性:ID,书名,作者,价

格,数量。

2.创建一个名为BookList的可变List,它只能用来保存Book的实例。

3.初始化三本不同的书(注意id不同就是不同的书),加入到BookList中。

4.添加一本已经存在的书。此时应该去修改BookList中对应书目的数量,而不

是去添加一条新数据。

5.根据图书名称查询是否在列表中(通过遍历列表对比名称)

6.删除指定书名的书

7.删除指定ID的书

8.对于图书按价格从高到低排序。

9.遍历图书列表,并打印每本书的详细信息

10.展示全部的总的金额

//1.使用case class创建图书信息类Book:包含四个属性:ID,书名,作者,价格,数量。
case class Book(id: Int, title: String, author: String, price: Double, quantity: Int)

object BookListExercise {
  import scala.collection.mutable.ListBuffer

//2.创建一个名为BookList的可变List,它只能用来保存Book的实例。
  val BookList = ListBuffer[Book]()

//3.初始化三本不同的书(注意id不同就是不同的书),加入到BookList中。
  def main(args: Array[String]): Unit = {
    // 初始化三本不同的书
    val book1 = Book(1, "Scala 入门指南", "作者 A", 30.0, 5)
    val book2 = Book(2, "函数式编程实战", "作者 B", 40.0, 3)
    val book3 = Book(3, "Scala 高级编程", "作者 C", 50.0, 4)
    BookList += book1
    BookList += book2
    BookList += book3

//4.添加一本已经存在的书。此时应该去修改BookList中对应书目的数量,而不是去添加一条新数据。
    // 添加一本已经存在的书
    val existingBook = Book(1, "Scala 入门指南", "作者 A", 30.0, 2)
    addBook(existingBook)

//5.根据图书名称查询是否在列表中(通过遍历列表对比名称
    val bookNameToFind = "函数式编程实战"
    println(s"Is book '$bookNameToFind' in the list? ${isBookInListByName(bookNameToFind)}")

//6.删除指定书名的书
    val bookNameToRemove = "Scala 高级编程"
    removeBookByName(bookNameToRemove)

//7.删除指定ID的书
    val idToRemove = 2
    removeBookById(idToRemove)

//8.对于图书按价格从高到低排序
    val sortedBooksByPrice = BookList.sortBy(-_.price)

//9.遍历图书列表,并打印每本书的详细信息
    println("Books in the list:")
    sortedBooksByPrice.foreach(book => println(s"ID: ${book.id}, Title: ${book.title}, Author: ${book.author}, Price: ${book.price}, Quantity: ${book.quantity}"))

//10.展示全部的总的金额
    val totalAmount = BookList.map(book => book.price * book.quantity).sum
    println(s"Total amount: $totalAmount")
  }

  // 添加书,如果已存在则增加数量
  def addBook(book: Book): Unit = {
    val existingBookOption = BookList.find(_.id == book.id)
    existingBookOption match {
      case Some(existingBook) =>
        val updatedQuantity = existingBook.quantity + book.quantity
        BookList.update(BookList.indexOf(existingBook), existingBook.copy(quantity = updatedQuantity))
      case None => BookList += book
    }
  }

  // 根据名称判断书是否在列表中
  def isBookInListByName(name: String): Boolean = {
    BookList.exists(_.title == name)
  }

  // 根据名称删除书
  def removeBookByName(name: String): Unit = {
    BookList -= BookList.find(_.title == name).get
  }

  // 根据 ID 删除书
  def removeBookById(id: Int): Unit = {
    BookList -= BookList.find(_.id == id).get
  }
}


原文地址:https://blog.csdn.net/2401_83599586/article/details/143673642

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!