给定以下书目: "Java基础教程","XML基础教程","JSP基础教程","C++基础教程","J2ME编程","操作系统","数据库技术", 及对应价格: 29,21,22,29,34,32,29。 使用Java语言,实现对书目按照价格从小到大的顺序进行排序。 输入要查找的书目价格,给出对应查找价格的图书信息。 图书类代码如下: class Book implements Comparable{ private double price; private String name; public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } //重写Comparable接口的 compareTo方法,实现对图书价格进行从小到大的排序 @Override public int compareTo(Book book) { return (int)(this.price-book.price)\*1000; } } 输入样例: 在这里输入要查找的图书价格。例如: 29 输出样例: 输出如下内容。例如: 按照价格排序********** XML基础教程:21.0 JSP基础教程:22.0 Java基础教程:29.0 C++基础教程:29.0 数据库技术:29.0 操作系统:32.0 J2ME编程:34.0 相同价格的书********** Java基础教程(29.0) C++基础教程(29.0) 数据库技术(29.0) 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB Java (javac) 1
时间: 2023-12-14 08:36:09 浏览: 31
这是一个简单的排序和查找的问题,可以使用Java内置的排序方法Arrays.sort和二分查找方法Arrays.binarySearch实现。
首先,创建一个Book类,重写Comparable接口的compareTo方法,实现对图书价格进行从小到大的排序:
```java
class Book implements Comparable<Book>{
private double price;
private String name;
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//重写Comparable接口的compareTo方法,实现对图书价格进行从小到大的排序
@Override
public int compareTo(Book book) {
return Double.compare(this.price, book.price);
}
}
```
然后,创建一个BookStore类,将所有书目添加到一个Book数组中,并按照价格从小到大排序:
```java
import java.util.Arrays;
import java.util.Scanner;
public class BookStore {
private Book[] books;
public BookStore() {
books = new Book[7];
books[0] = new Book();
books[0].setName("Java基础教程");
books[0].setPrice(29);
books[1] = new Book();
books[1].setName("XML基础教程");
books[1].setPrice(21);
books[2] = new Book();
books[2].setName("JSP基础教程");
books[2].setPrice(22);
books[3] = new Book();
books[3].setName("C++基础教程");
books[3].setPrice(29);
books[4] = new Book();
books[4].setName("J2ME编程");
books[4].setPrice(34);
books[5] = new Book();
books[5].setName("操作系统");
books[5].setPrice(32);
books[6] = new Book();
books[6].setName("数据库技术");
books[6].setPrice(29);
Arrays.sort(books); //按照价格从小到大排序
}
public void search(double price) {
System.out.println("按照价格排序**********");
for (Book book : books) {
if (book.getPrice() == price) {
System.out.println(book.getName() + ":" + book.getPrice());
}
}
System.out.println("相同价格的书**********");
int index = Arrays.binarySearch(books, new Book(){{setPrice(price);}}, null);
if (index >= 0) {
for (int i = index; i < books.length; i++) {
if (books[i].getPrice() != price) {
break;
}
System.out.println(books[i].getName() + "(" + books[i].getPrice() + ")");
}
for (int i = index - 1; i >= 0; i--) {
if (books[i].getPrice() != price) {
break;
}
System.out.println(books[i].getName() + "(" + books[i].getPrice() + ")");
}
} else {
System.out.println("没有找到价格为" + price + "的书目!");
}
}
public static void main(String[] args) {
BookStore store = new BookStore();
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要查找的图书价格:");
double price = scanner.nextDouble();
store.search(price);
}
}
```
在main方法中,我们首先创建一个BookStore对象,然后通过Scanner读取用户输入的要查找的图书价格。接下来,调用search方法,按照价格从小到大输出所有书目,并查找出价格与输入相同的书目。
在search方法中,我们首先按照价格从小到大输出所有书目,并将价格与输入相同的书目输出。然后,使用Arrays.binarySearch方法查找价格与输入相同的书目,并输出相同价格的书目。如果没有找到价格为输入的书目,则输出提示信息。
以上就是完整的代码实现。