设计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
答案(未修改至PTA答案)

该题主要是 toString()的重写(System.out.println(book)看出;)Array.sort 的使用与 compareTo()无奈上课没听课本也没找到。事实证明上课听讲蛮重要的
去年 的期中考试函数题也有用到 不过好像当时进度比我们快 有些没学到
6-1 可排序的学生类 (20 分)面向对象程序设计(Java)期中考试题–计算机17-1,2
1 Array.sort()的使用方法以及原理
2Arrays.sort()如何实现从大到小排序
3JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序

package mu;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;public class Book {private String name;private double price;private Date publishDate;public String getName() {return name;}public Book(String name, Date publishDate, double price) {super();this.name = name;this.publishDate = publishDate;this.price = price;}public void setName(String name) {this.name = name;}public Date getPublishDate() {return publishDate;}public void setPublishDate(Date publishDate) {this.publishDate = publishDate;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String toString() {String s = new String(""); //= "书名:"+getname()+",定价:"+getprice();System.out.print("书名:"+getName()+",定价:"+getPrice());return s;}public static void main(String[] args) {// TODO Auto-generated method stubScanner 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();}}
class BookComparatorByPrice implements Comparator<Book> {public int compare(Book a, Book b){if(a.getPrice() == b.getPrice()){if( a.getName().compareTo( b.getName() ) > 0){return 1;}else return -1;}else{if(a.getPrice() > b.getPrice())return 1;else return -1;}}}class BookComparatorByPubDate implements Comparator<Book>{public int compare(Book a, Book b){if( a.getPublishDate().compareTo( b.getPublishDate() ) < 0){return 1;}else {return -1;}}
}

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

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

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

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

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

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

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

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

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

  5. OJ sdust Java记录

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

  6. pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...

    1039 到底买不买 (20分) 原题链接:传送门 一.题目: 输入样例 1: ppRYYGrrYBR2258 YrR8RrY 输出样例 1: Yes 8 输入样例 2: ppRYYGrrYB225 ...

  7. 山科大计算机专业排名,山东科技大学专业排名情况

    山东科技大学专业排名情况 山东科技大学建校于1951年,现已发展成为一所工学.理学.管理学.文学.法学.经济学.艺术学等多学科相互渗透.协调发展的省属重点大学.下面是小编为你整理的山东科技大学专业之间 ...

  8. 山东科技大学新增计算机专业,山科大新增物联网专业 全国30高校获批此专业...

    记者2月28日从山东科技大学获悉,2011年,学校将新增一个热门专业物联网工程,并且将在今年招生.据悉,2011年,全国共有30所高校新增物联网工程专业.记者采访获悉,物联网工程专业听起来虽然比较新, ...

  9. Java中的String数据类型,String类(字符串)详解

    目录 第一章.String概述 1)String是什么 2)String长什么样 3)String的构造方法(声明方式) 第二章.String类的详解 1)String底层是什么 2)字符串存储的内存 ...

最新文章

  1. 给element-ui的steps加点击事件
  2. 复制文件时怎么保留权限
  3. (组合数学)AtCoder Grand Contest 019 F - Yes or No
  4. 《LeetcodeHot100非困难题补录》
  5. 如何理解Java中的自动拆箱和自动装箱?
  6. rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]
  7. 关于null对象使用print方法打印问题总结,null+123打印结果是null123还是123?
  8. Java基础篇:如何解决成员的访问和继承?
  9. JAVA编译器的作用
  10. java mb单位转换_字节、kb、mb等单位,是怎样换算的?
  11. 2022年新冠疫情后上海的电子商务,数字化经济可能的新趋势
  12. 总算了解了什么叫云计算
  13. 10041---socket与http的区别
  14. 如何规避适配风险?以《乱世王者》为例,探秘手游兼容性测试之路
  15. 普通运维人员真的就是秋后的蚂蚱吗?
  16. 复制粘贴-实现动态爱心 网页版
  17. 本地搭建自己的电影网站,并发布公网访问 1-3
  18. Alpine系统的基础操作
  19. c语言数组中插入新数据
  20. 去耦电容和旁路的概念说明与应用说明

热门文章

  1. 未来已来!阿里小蜜AI技术揭秘
  2. 十年远征:一个云操作系统的光荣与梦想
  3. apple tv 开发_Apple TV首批#madewithunity游戏发售
  4. CSS3 深海游弋的鱼群
  5. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构
  6. 2018 拼多多 校招真题 最大乘积
  7. linux C++ 获取当前时间,以标准时间“年-月-日 时:分:秒”的形式输出
  8. 那些曾经大名鼎鼎的黑客,现在怎么样了?(第一集)
  9. 雨林木风linux安装教程,雨林木风修复win7系统虚拟机安装linux提示network error的办法...
  10. win7安装android驱动失败怎么办,Win7蓝牙驱动安装失败的原因分析与解决方法