构造一个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();
}
}
}