JAVA填空总是没思路哇

构造一个Money类表示一张纸币,该类实现了Comparable接口。
。该类有一个私有的int类型成员变量value,表示纸币的面值
。该类有一个私有的Date类型成员变量date,表示纸币的制造时间
。该类有一个带一个int型参数和一个Date型参数的构造方法,用参数的值初始化纸币的面值和制造时间。。 该类有一个带一个int型参数的构造方法,用参数的值初始化纸币的面值,制造时间为当前时间,
。为value添加getter()和setter()方法。注意,面值必须大于0,如果setMoney(int value)方法的参数小于等于0时,抛出一个 IllegaArgumentException异常对象,异常对象的详细信息为"货币的面值必须大于0"。
25 ·为date添加setter()方法
。该类有一个公共的方法int compareTo(Moneymoney),如果当前对象的面值和参数面值不一样,返回2者的差值(面值大的纸币认为大
于另一方):如果当前对象的面值和参数面值一样,返回2者的制造时间的差值(制造时间早的纸币认为大干另一方),
。一个公共方法public boolean equals(Object o),比较当前对象跟参数是否相等。如果两者都是Money类的对象且面值相同,则认为两张
纸币相同,否则不相同。
构造一个Main类。在main方法中,执行一个for循环,共循环10次。每次循环从键盘读入数据创建两个Money对象

Money类


import java.util.Date;

public class Money implements Comparable<Money> {
    private int value;
    private Date date;

    public Money(int value, Date date) {
        this.value = value;
        this.date = date;
    }

    public Money(int value) {
        this(value, new Date());
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        if (value <= 0) {
            throw new IllegalArgumentException("货币的面值必须大于0");
        }
        this.value = value;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    @Override
    public int compareTo(Money money) {
        if (this.value != money.value) {
            return this.value - money.value;
        }
        return this.date.compareTo(money.date);
    }

    @Override
    public boolean equals(Object o) {
        if (o instanceof Money) {
            Money other = (Money) o;
            return this.value == other.value;
        }
        return false;
    }
}

Main

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 10; i++) {
            System.out.println("请输入第一张纸币的面值:");
            int value1 = scanner.nextInt();
            System.out.println("请输入第二张纸币的面值:");
            int value2 = scanner.nextInt();
            Money money1 = new Money(value1);
            Money money2 = new Money(value2);
            if (money1.compareTo(money2) > 0) {
                System.out.println("第一张纸币更大");
            } else if (money1.compareTo(money2) < 0) {
                System.out.println("第二张纸币更大");
            } else {
                System.out.println("两张纸币一样大");
            }
            if (money1.equals(money2)) {
                System.out.println("两张纸币相同");
            } else {
                System.out.println("两张纸币不相同");
            }
        }
    }
}

一个实现如下:

Money.java


package moneytest;

import java.util.Date;

public class Money implements Comparable{

    private int value;
    private Date date;
    
    public Money(int value,Date date) {
        this.value = value;
        this.date = date;
    }
    
    public Money(int value) {
        this.value = value;
        //  https://www.jianshu.com/p/d076d17fdb56 
        this.date = new Date();        
    }

    public int getMoney() {
        return value;
    }

    public void setMoney(int value) {
        if(value<=0) {
            throw new IllegalArgumentException("货币的面值必须大于0");
        }else {
            this.value = value;
        }
    }
    
    public void setDate(Date date) {
        this.date = date;
    }
    
    public Date getDate() {
        return this.date;
    }

    @Override
    public int compareTo(Object o) {
        // TODO Auto-generated method stub
        Money m  = (Money)o;        
        if(this.getMoney()!=m.getMoney()) {
            return this.getMoney() - m.getMoney(); 
        }else if(this.getMoney()==m.getMoney()){
            return this.getDate().compareTo(m.getDate());
        }
        
        return 0;
    }
    
    public boolean equals(Object o) {
        
        Money m  = (Money)o;
        
        //  https://blog.csdn.net/weixin_42104947/article/details/114280830        
        if((o instanceof Money )&&this.getMoney()==m.getMoney()) {
            return true;
        }else {
            return false;
        }    
        
    }
    
}



Main.java


package moneytest;

import java.util.Date;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Scanner sc  = new Scanner(System.in);
        int value1,value2 ;
        String strDate1,strDate2;
        Date date1,date2;
        
        for(int i=0;i<10;i++) {
            System.out.print("请输入第"+(i+1)+"组第一个Money对象的面值:");
            value1 = sc.nextInt();
            sc.nextLine();
            System.out.print("请输入第"+(i+1)+"组第一个Money对象的制造时间:");
            //  https://blog.csdn.net/qq_43592064/article/details/124949193
            // https://blog.csdn.net/weixin_30800961/article/details/114083615
            strDate1 = sc.nextLine();
            //System.out.println("strDate1="+strDate1);
            date1 = new Date(strDate1);
            Money m1 = new Money(value1,date1);
            
            System.out.print("请输入第"+(i+1)+"组第二个Money对象的面值:");
            value2 = sc.nextInt();
            sc.nextLine();
            System.out.print("请输入第"+(i+1)+"组第二个Money对象的制造时间:");
            strDate2 = sc.nextLine();
            
            date2 = new Date(strDate2);
            Money m2 = new Money(value2,date2);
            
            int cmp =  m1.compareTo(m2);
            boolean same = m1.equals(m2);
            System.out.println("comparTo方法比较第"+(i+1)+"组第一个Money对象第"+(i+1)+"组第二个Money对象的结果是:"+cmp);
            System.out.println("equals方法比较第"+(i+1)+"组第一个Money对象第"+(i+1)+"组第二个Money对象的结果是:"+same);
            
            System.out.println();
        }
    }

}


img