2) 需求说明
a) 编写一个Book类,该类至少有name和price两个属性。
b) 该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。
c) 在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等
d) 程序中要有异常处理。不用数据库
import java.util.ArrayList;
import java.util.List;
class Book implements Comparable<Book>
{
private String name;
private double price;
public Book(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
@Override
public int compareTo(Book otherBook) {
if (this.price < otherBook.price) {
return -1;
} else if (this.price > otherBook.price) {
return 1;
} else {
return 0;
}
}
}
public class Main {
public static void main(String[] args) {
Book book1 = new Book("aaa", 29.99);
Book book2 = new Book("bbb", 39.99);
Book book3 = new Book("ccc", 24.99);
List<Book> bookList = new ArrayList<>();
bookList.add(book1);
bookList.add(book2);
bookList.add(book3);
Book newBook = new Book("ddd", 24.99);
for (Book book : bookList) {
if (newBook.equals(book)) {
System.out.println("新的 `Book` 对象和对象 " + book.getName() + " 相等。");
}
}
}
}
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Book implements Comparable<Book>{
private String name;
private double price;
// Constructor
public Book(String name, double price) {
this.name = name;
this.price = price;
}
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public int compareTo(Book otherBook) {
if (this.price < otherBook.getPrice()) {
return -1;
} else if (this.price > otherBook.getPrice()) {
return 1;
}
return 0;
}
public static void main(String[] args) {
List<Book> books = new ArrayList<>();
books.add(new Book("The Great Gatsby", 10.99));
books.add(new Book("To Kill a Mockingbird", 8.99));
books.add(new Book("1984", 12.99));
books.add(new Book("Pride and Prejudice", 6.99));
Book newBook = new Book("The Great Gatsby", 10.99);
for (Book book : books) {
if (book.equals(newBook)) {
System.out.println("The new book is equal to " + book.getName());
}
}
try {
// Some code that might throw an exception
} catch (Exception e) {
System.out.println("An error occurred: " + e.getMessage());
}
}
}
解释:
实现了一个Book类,包括属性 name 和 price,并且实现了Comparable<Book>接口,根据价格比较两个对象的大小。
在主函数中,实例化了一个Book列表,添加了四个不同的书,并且实例化了一个新的书,检查是否与列表中的书相等。
添加了异常处理代码块,以防止程序出错并输出错误消息。
```
不知道你这个问题是否已经解决, 如果还没有解决的话: