设计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;
//将键盘录入的日期字符串转换为Date
SimpleDateFormat 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按照出版日期降序排序;然后输出books
Arrays.sort(books, new BookComparatorByPubDate());
for(Book book:books){
System.out.println(book);
}
//3.将books按照价格升序排序,如果价格相同,则按照书名字母顺序排列。然后输出books
Arrays.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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;
class Book{
private String name;
private Date publishDate;
private double price;
public Book(String n,Date d,double p){
name=n;
publishDate=d;
price=p;
}
public String getName(){
return name;
}
public Date getPublishDate(){
return publishDate;
}
public double getPrice(){
return price;
}
@Override
public String toString(){
return "书名:"+getName()+",定价:"+getPrice();
}
}
class BookComparatorByPubDate implements java.util.Comparator<Book>{
@Override
public int compare(Book o1, Book o2) {
return o2.getPublishDate().compareTo(o1.getPublishDate());
}
}
class BookComparatorByPrice implements java.util.Comparator<Book>{
@Override
public int compare(Book o1, Book o2) {
if(Double.compare(o1.getPrice(), o2.getPrice())!=0){
return Double.compare(o1.getPrice(), o2.getPrice());
}
return o1.getName().compareTo(o2.getName());
}
}

813

被折叠的 条评论
为什么被折叠?



