键盘输入3本书按照价格从低到高排序后输出,如果价格相同则按照书名的自然顺序排序;

键盘输入3本书按照价格从低到高排序后输出,如果价格相同则按照书名的自然顺序排序;

要求:

1:书以对象形式存在,包含书名和价格(int类型)两个属性;

2:要求即使直接打印书对象的时候,也能看到书的名称和价格,而不是书对象的地址值;

3:分别使用自然排序和比较器排序实现效果;

在这里插入图片描述
TreeSet list = new TreeSet<>(new Comparator() {
@Override
public int compare(Book o1, Book o2) {

            int result = o1.getPrice() - o2.getPrice();

            return result;
        }
    });

    Scanner sc = new Scanner(System.in);
    int i = 1;
    try {
        while (true) {
            Book book = new Book();
            String s = null;
            int p = 0;

            System.out.println("请输入第" + i + "本书的名称:");
            s = sc.next();

            System.out.println("请输入第" + i + "本书的价格(整数):");
            p = sc.nextInt();


            book.setTitle(s);
            book.setPrice(p);

            list.add(book);
            i++;

            System.out.println("添加" + book.getTitle() + ",书已经成功,继续添加请输入1,输入其他字符结束");
            int a = sc.nextInt();
            if (a != 1) {
                break;
            }

            }
    } catch (Exception e) {
        System.out.println("输入格式错误");
        sc = new Scanner(System.in);
    }


    System.out.println("您一个添加了:3本书,分别是:");
    for (Book book1 : list) {
        System.out.println(book1);
}



    }
}

public class Book implements Comparable {

    private  String title;
    private  int  price;


public Book() {
}

public Book(String title, int price) {
    this.title = title;
    this.price = price;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public int getPrice() {
    return price;
}

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

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

@Override
public int compareTo(Book o) {


    int result = this.getPrice()-o.getPrice();

    result =result==0?getTitle().compareTo(o.getTitle()):result;

    return result;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值