public boolean equals(Object o)
{
boolean result = false;
if(o!=null && o instanceof Person)
{
Person anotherperson = (Person) o;
if(this.getName() == anotherperson.getName() && this.getCal() == anotherperson.getCal())
{
result = true;
}
}
return result;
}
public int hashCode()
{
return getName().hashCode() ^ getCal().hashCode();
}
} /////////////////////// 我需要发生的是相等的方法将比较输入的值是相同还是不相同,现在它显示不相同,无论我改变什么,似乎是一个问题,在布尔等于comapring 2个对象。
答案 0 :(得分:0)
字符串和MyDate
是对象,您需要使用equals()
而不是==
来比较它们。
public boolean equals(Object o) {
boolean result = false;
if (o instanceof Person) {
Person other = (Person) o;
if (this.getName().equals(other.getName())
&& this.getDob().equals(other.getDob())) {
result = true;
}
}
return result;
}
请注意,此equals()
实施尚未正确解决name
或dob
为null
的情况。
答案 1 :(得分:0)
在班级中,将您的equals
方法更改为:
public boolean equals(Object o) {
boolean result = false;
if (o != null && o instanceof Person) {
Person anotherperson = (Person) o;
if (this.getName().equals(anotherperson.getName()) && this.getDob().equals(anotherperson.getDob())) {
result = true;
}
}
return result;
}
如上所述,您需要使用equals
而不是==
来比较String对象。
修改强>
您只需要在main方法中解析args
数组。
将您的TestPerson类更改为:
public class TestPerson {
public static void main(String args[]) {
String name1 = args[0];
String[] date1 = args[1].split(", ");
String name2 = args[2];
String[] date2 = args[3].split(", ");
Person p1 = new Person(name1, new MyDate(Integer.valueOf(date1[0]), Integer.valueOf(date1[1]), Integer.valueOf(date1[2])));
Person p2 = new Person(name2, new MyDate(Integer.valueOf(date2[0]), Integer.valueOf(date2[1]), Integer.valueOf(date2[2])));
if (p1.equals(p2)) {
System.out.println("Identical");
System.out.println(p1);
System.out.println(p2);
} else {
System.out.println("Not Identical");
System.out.println(p1);
System.out.println(p2);
}
}
}
请注意,输入应使用引号。例如,“Jose”,“1,1,2000”。我假设您的日期格式与我上面的示例完全相同。