6-23 sdust-Java-可实现多种排序的Book类 (20 分)

设计Book类,要求:1)Book类的成员属性包括:书名name(String类型)、出版日期publishDate(Date类型)、定价price(double型);2)为Book对象提供按出版日期、价格排序的两种方式,且能够满足测试程序代码中的输入输出要求(注意代码注释中的说明)。其中,类BookComparatorByPrice的排序功能是:将一组Book对象按照价格升序排序,如果价格相同,则按照书名字母顺序排列;类BookComparatorByPubDate的排序功能是:将一组Book对象按照出版日期降序排序。

裁判测试程序样例:

public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);Book[] books = new Book[4];//1. 从键盘接收用户输入的4本书的名称(仅有英文字符构成)、出版日期(格式:1998-10-09)、价格,生成Book对象,构造包含4本书的数组for(int i=0;i<4;i++){String name = scan.next();String date_str = scan.next();Date date = null;//将键盘录入的日期字符串转换为DateSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {date = sdf.parse(date_str);} catch (ParseException e) {System.out.println("日期格式有误");;}double price = Double.parseDouble(scan.next());Book book = new Book(name, date, price);books[i] = book;}//2.将books按照出版日期降序排序;然后输出booksArrays.sort(books, new BookComparatorByPubDate());for(Book book:books){System.out.println(book);}//3.将books按照价格升序排序,如果价格相同,则按照书名字母顺序排列。然后输出booksArrays.sort(books, new BookComparatorByPrice());for(Book book:books){System.out.println(book);}scan.close();}}/* 请在这里填写答案 */

输入样例:

Java
2011-08-01
29
Python
2014-01-01
48
C
2004-09-08
17.5
DataBase
2012-09-17
17.5

输出样例:

书名:Python,定价:48.0
书名:DataBase,定价:17.5
书名:Java,定价:29.0
书名:C,定价:17.5
书名:C,定价:17.5
书名:DataBase,定价:17.5
书名:Java,定价:29.0
书名:Python,定价:48.0

参考答案

class Book{private String name;private Date publishDate;private double price;public Book(String name, Date publishDate, double price) {this.name = name;this.publishDate = publishDate;this.price = price;}public String getName() {return name;}public Date getPublishDate() {return publishDate;}public double getPrice() {return price;}public String toString(){return "书名:" + name + ",定价:" + price;}
}class BookComparatorByPrice implements Comparator {@Overridepublic int compare(Object o1, Object o2) {Book b1 = (Book)o1;Book b2 = (Book)o2;if( b1.getPrice() == b2.getPrice() ){return b1.getName().compareTo(b2.getName());}else{return b1.getPrice() < b2.getPrice() ? -1 :  1;}}
}class BookComparatorByPubDate implements Comparator{@Overridepublic int compare(Object o1, Object o2) {Book b1 = (Book)o1;Book b2 = (Book)o2;return b2.getPublishDate().compareTo(b1.getPublishDate());}
}

6-23 sdust-Java-可实现多种排序的Book类 (20 分)相关推荐

  1. 6-3 sdust-Java-可实现多种排序的Book类 (20 分)

    6-3 sdust-Java-可实现多种排序的Book类 (20 分) 设计Book类,要求: 1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date ...

  2. 山科大 6-1 sdust-Java-可实现多种排序的Book类 (20 分)(18 软件 期中考试函数1)

    设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类型).定价price(double型):2)为Book对象提供按出版日期 ...

  3. 6-9 长方形长方体类 (20 分)Java函数题

    6-9 长方形长方体类 (20 分) 定义一个长方形类Rectangle,拥有长.宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea() 定义一个子类长方体类,拥有长. ...

  4. 6-23 sdust-Java-可实现多种排序的Book类

    设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类型).定价price(double型):2)为Book对象提供按出版日期 ...

  5. R6-4 sdust-Java-可实现多种排序的Book类

    设计Book类,要求:1)Book类的成员属性包括:书名name(String类型).出版日期publishDate(Date类型).定价price(double型):2)为Book对象提供按出版日期 ...

  6. java8 朗姆表达式,java同步数据库时间问题[问题点数:20分,结帖人vtison]

    查看您说的数据类型,例如MySQL数据库,日期仅具有日期,时间仅具有时间,datetime是常用的记录时间类型,它可以精确到毫秒,就好像它是时间戳一样,时间戳也是可选的,第一个表中的timestamp ...

  7. 6-1 数据结构实验之排序八:快速排序 (20 分)

    题目描述: 本题要求实现一个快速排序函数. 给定 N ( N<= 100000 ) 个 int 范围内的整数,要求用快速排序对数据进行升序排列. 函数接口定义: void Quick_sort ...

  8. 7-3 java高级 22_19寻找最大块的问题 (20 分)

    寻找最大正方形块的问题,设计一个动态编程的算法,输入一个10*10的方格矩阵,矩阵元素为0或1,查找包含1值的最大块,输出左上角和右下角坐标,左上角坐标设为0.0. 输入格式: 输入一个10*10的方 ...

  9. (java版)L1-020 帅到没朋友 (20分)

    当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤100),是已知朋友圈的个数:随后N行,每行首先给 ...

最新文章

  1. 奇淫异巧之 PHP 后门
  2. php如何判断用户是从指定页面跳转进来的
  3. SAP WebClient UI开发工具中attribute文件夹展开的实现原理分析
  4. js的下拉刷新和上拉加载,基于iScroll v4.2.5
  5. 向三姑六婶解释你在一线城市的工作
  6. java多线程机制计时器_java多线程定时器与单例模式
  7. 一阶低通滤波器方程_一阶RC低通滤波器杂记
  8. celery学习笔记:celery安装,并运行第一个应用
  9. Python-三元运算符和lambda表达式
  10. (八)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训
  11. 现代通信原理3.2:线性系统的时域与频域特性
  12. Android周日历可滑动可选择日期
  13. 软件设计模式与体系结构课后作业汇总
  14. 【工控老马】S7-200通过自由口控制Modbus变频器正反转实例详解
  15. Ubuntu20破解管理员root密码忘记密码找回
  16. 采用卡尔曼滤波计算电池SOC
  17. 解决Edge及Chrome等浏览器主页被篡改2345导航页
  18. 来看看一位阿里P9的年薪和资产
  19. stm32f407Zgt6 与 hc05蓝牙模块通信
  20. php 设置斜体字体,斜体 - FontForge 教程 | BootWiki.com

热门文章

  1. 计算机网络的应用阶层,计算机网络应用专业人才培养方案.doc
  2. 如果张柏芝的孩子长大
  3. 固态硬盘能不能提高计算机速度,固态硬盘—提升电脑速度最有效的利器!
  4. 博士骗领210万元、硕士骗领3万元人才补贴,全被判刑了!
  5. mysql jpa 批注 视图_JPA 批注参考
  6. MySQL数据库 日志管理、备份与恢复
  7. bat打开网页10秒后关闭
  8. win7网络上计算机进不去,Win7电脑开机进不了系统怎么办?
  9. 对象上下文语义分割:OCR论文笔记(Object-Contextual Representations for Semantic Segmentation )
  10. DeFi保险协议InsurAce.io宣布与Mushrooms Finance达成战略合作为其平台用户提供智能合约安全相关保险服务