当前位置: 首页> 健康> 科研 > 中国制造平台_推荐一些b2b网站_百度如何发布信息推广_黄页网

中国制造平台_推荐一些b2b网站_百度如何发布信息推广_黄页网

时间:2025/7/17 17:28:06来源:https://blog.csdn.net/2302_79602355/article/details/146422227 浏览次数:0次
中国制造平台_推荐一些b2b网站_百度如何发布信息推广_黄页网

题目:设计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

解析:

根据要求1),我们可以给出Book类

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;}@Overridepublic String toString() {return "书名:" + name + ",定价:" + price;}}

其中根据输出样例,我们可以得到toString()怎么写的。

toString()方法重写了Object类的toString()方法,以便于打印Book对象时能够输出书名和定价的格式化字符串。

难点就在于,BookComparatorByPubDate(下面简写为1)类和BookComparatorByPrice(2)类中的比较字符串大小。

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());}}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;}}}

以下详细讲解下1类(2类与1类类似):

1类实现了Comparetor接口,用于比较两个Book对象的出版日期。

compare(Object o1,Object o2)方法接受了两个Object类型的参数,它们将被转换为Book类型。

方法内部比较两个Book对象的publishDate。它使用Date类的compareTo方法来比较日期,如果第一个日期在第二个日期之后,则返回正值;如果第一个日期在第二个日期之前,则返回负值;如果相同,则返回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;}@Overridepublic String toString() {return "书名:" + name + ",定价:" + price;}}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());}}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;}}}

其中:

Book b1 = (Book) o1;
Book b2 = (Book) o2;

(Book)o1 和 (Book) o2是类型转换操作,它们将o1和o2两个参数转换为Book类型。

在Java中,compare方法用于比较两个对象,以确定它们的顺序。这个方法在Comparetor中定义,用于实现自定义的比较逻辑。

举个例子:

public interface Comparator<T> {int compare(T o1, T o2);
}

Comparator接口定义了一个compare方法。

关键字:中国制造平台_推荐一些b2b网站_百度如何发布信息推广_黄页网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: