编写一个Book类,该类至少有name和price两个属性。该类要实现Comarable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系

【问题描述】编写一个Book类,该类至少有name和price两个属性。该类要实现Comarable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。

【输入形式】每一行输入一个Book类的对象,名字和价格之间用逗号分隔,集合类的输入结束符号是#,然后输入一个新的Book类对象。

【输出形式】
显示查找结果,如果找到了,就显示具体对象的信息,没找到,就不显示。

【样例输入1】
input several Book,in the end #
yuwen,10
shuxue,12
yingyu,11

input a new Book:
kexue,12

【样例输出1】
new book:< kexue >as same books
shuxue,12.0

【样例输入2】
input several Book,in the end #
yuwen,10
shuxue,12
waiyu,11

input a new Book:
kexue,13

【样例输出2】
new book:< kexue >as same books
比较字符串是否相等用equals(str1,str2)

package first;
import java.util.*;

public class Test {

	public static void main(String[] args) {
		System.out.println("input several Book,in the end #");
		Scanner input = new Scanner(System.in);
		List<Book>list = new ArrayList<Book>();
		String name=input.nextLine();
		while(!name.equals("#"))
		{
			String s[] = name.split(",");
			double p1 = Double.valueOf(s[1]);
			list.add (new Book(s[0],p1));
			name = input.nextLine();
		};
		System.out.println("input a new Book:");
		String n = input.nextLine();
		String str[] = n.split(",");
		double p2 = Double.valueOf(str[1]);
		Book a = new Book(str[0],p2);
        System.out.println("new book:<"+a.name+">as same books");
        for(int i=0;i<list.size();i++)
        {
        	if(a.compareTo(list.get(i))==1)
        	{
        		System.out.print(list.get(i).name+",");
        	    System.out.print(list.get(i).price);
        	}
        }
	}
}
class  Book  implements  Comparable<Book>{
	public  String name;
	public double price;
	public Book(String n,double p){
		this.name = n;
		this.price = p;	
	}
	public  int  compareTo(Book  o) {
		Book book = (Book)o;
		if(book.price==this.price)
			return 1;
		else
			return 0;
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值