我尝试测试我的代码,但最后一个System.out.printl没有回答,为什么?
@Test
public void testcopy(){
RomanNumber rn1 = new RomanNumber("M");
RomanNumber rn2 = new RomanNumber("M");
RomanNumber rn1_copy = rn1;
System.out.println("rn1 == rn1_copy is "
+ (rn1 == rn1_copy));
System.out.println("rn1 == rn2 is " + (rn1 == rn2));
System.out.println("rn1.equals(rn2) is " + (rn1.equals(rn2)));
}
同样,我想覆盖超类equals()
的{{1}}方法,我试过这个:
Object
最后,我在下面发布所有代码:
public boolean equals(Object obj) {
if ((obj instanceof RomanNumber)) {
RomanNumber decimal = (RomanNumber) obj;
if (number == decimal.convertToInteger () && number.equals(decimal.convertToInteger) ) {
return true;
} else {
return false;
}
} else {
return false;
}
}
谢谢。
答案 0 :(得分:0)
你的第一个问题是
1)不兼容的操作数类型String和int
number == decimal.convertToInteger ()
您无法直接比较String和int
您可以通过删除
行解决问题 2)number.equals(decimal.convertToInteger())
此处您传递的号码为M
。
但是decimal.convertToInteger()
返回1000
所以这不适合比较两个对象是否相等
如何解决?
public boolean equals(Object obj){
if ((obj instanceof RomanNumber)) {
RomanNumber decimal = (RomanNumber)obj;
if (number.equals(decimal.number)) {
return true;
}
else {
return false;
}
}
else {
return false;
}
}