定义一个Book类(id,书名,作者,价格),使用ArrayList集合,在类main方法加载运行时添加10本书,书籍具有书名、作者、价格三个属性,在main函数中通过键盘录入一个书名时,查询出该书籍

1.核心源码

package cn.io;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * <p>Project: zixinyuan - OracleUtil
 *
 * @author zixinyuanya [2991228540@qq.com]
 * @version 1.0
 * @since 17
 */
public class Book {
    private int id;
    private String name;
    private String author;
    private double price;

    public Book() {

    }

    static List<Book> list = new ArrayList<>();

    public Book(int id, String name, String author, double price) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.price = price;
//        getter setter….
    }

    public int getId() {
        return id;
    }

    public void steId(int id) {
        this.id = id;

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;

    }

    public String getAuthor() {
        return author;

    }

    public void setAuthor(String author) {
        this.author = author;

    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = 0;
        while (true) {
            i = list.size() + 1;
            System.out.printf("请输入第%d本书籍名称  作者  价格: ", i);
            String n = sc.next();
            String a = sc.next();
            double p = sc.nextDouble();
            Book bk = new Book(i, n, a, p);
            list.add(bk);
            if (list.size() == 10) {
                System.out.println("10 书籍输入完成。 进入程序查询");
                break;
            }
            System.out.println();

        }
        System.out.println();

         System.out.println("----------------------------------------");

        while(true)

    {
        System.out.print("请输入书籍名称(退出quit):");
        String n = sc.nextLine();
        if ("quit".equalsIgnoreCase(n)) break;
        for (Book b : list) {
            if (b.getName().contains(n)) {
                System.out.println(b);
            }
        }
        System.out.println();
    }


 }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

2.运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解决这个问题。 首先,我们可以定义一个 `Book` 包含书名作者价格属性,并实现 `Comparable` 接口,以便能够根据价格进行比较。 ```java public class Book implements Comparable<Book> { private String title; private String author; private double price; public Book(String title, String author, double price) { this.title = title; this.author = author; this.price = price; } public String getTitle() { return title; } public String getAuthor() { return author; } public double getPrice() { return price; } @Override public int compareTo(Book other) { return Double.compare(this.price, other.price); } } ``` 接着,我们可以创建一个泛型集合,存放 `Book` 对象,并对它们进行排序。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<Book> books = new ArrayList<>(); books.add(new Book("Java 编程思想", "Bruce Eckel", 79.9)); books.add(new Book("深入浅出设计模式", "程杰", 59.0)); books.add(new Book("Effective Java", "Joshua Bloch", 98.0)); books.add(new Book("算法导论", "Thomas H. Cormen", 128.0)); Collections.sort(books); for (Book book : books) { System.out.println(book.getTitle() + " - " + book.getAuthor() + " - " + book.getPrice()); } } } ``` 在上面的代码,我们首先创建了一个 `List<Book>` 对象,包含了几本书的信息。然后,我们使用 `Collections.sort()` 方法对这个集合进行排序,排序的依据是 `Book` 实现的 `compareTo()` 方法。最后,我们遍历排序后的集合,输出每本书的信息。 输出结果如下: ``` 深入浅出设计模式 - 程杰 - 59.0 Java 编程思想 - Bruce Eckel - 79.9 Effective Java - Joshua Bloch - 98.0 算法导论 - Thomas H. Cormen - 128.0 ``` 可以看到,输出的结果是按照价格递增排序的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值