Java 断言错误-虚数和实数加法器
我得到一个错误:Java 断言错误-虚数和实数加法器,java,junit5,assertion,real-number,Java,Junit5,Assertion,Real Number,我得到一个错误: java.lang.AssertionError: expected: learning.java.advancedoop2.MyComplex<(2.0+10.0i)> but was: learning.java.advancedoop2.MyComplex<(2.0+10.0i)> Expected :learning.java.advancedoop2.MyComplex<(2.0+10.0i)> Actual :learnin
java.lang.AssertionError: expected: learning.java.advancedoop2.MyComplex<(2.0+10.0i)> but was: learning.java.advancedoop2.MyComplex<(2.0+10.0i)>
Expected :learning.java.advancedoop2.MyComplex<(2.0+10.0i)>
Actual :learning.java.advancedoop2.MyComplex<(2.0+10.0i)>
我试着做测试,当我运行它们时,我得到的错误是正面的,下面是我测试代码的一部分:
@Test
public void add() {
MyComplex myComplexFirst = new MyComplex(1, 5);
MyComplex myComplexSecond = new MyComplex(1, 5);
MyComplex myComplexThird = new MyComplex(myComplexFirst.getReal() + myComplexSecond.getReal(), myComplexFirst.getImag() + myComplexSecond.getImag());
myComplexFirst.add(myComplexSecond);
MyComplex newComplex = myComplexFirst;
assertEquals(newComplex, myComplexThird);
}
您是否重写了自定义类中的equals方法 如果没有,默认行为是比较引用。这可以解释您收到的错误消息
这是令人困惑的,因为您已经重写了显示两个实例的toString方法,使其具有相同的值 您是否重写了自定义类中的equals方法 如果没有,默认行为是比较引用。这可以解释您收到的错误消息
这是令人困惑的,因为您已经重写了显示两个实例的toString方法,使其具有相同的值 您需要重写equals方法,以便java知道如何比较两个
MyComplex
对象。现在,它不知道您想要基于real
和imag
值比较对象
@Override
public boolean equals(Object o) {
// If the object is compared with itself then return true
if (o == this) {
return true;
}
// Check if o is an instance of MyComplex
if (!(o instanceof MyComplex)) {
return false;
}
// typecast o to MyComplex so that we can compare data members
MyComplex c = (MyComplex) o;
// Compare the data members and return accordingly
return Double.compare(real, c.getReal()) == 0
&& Double.compare(imag, c.getImag()) == 0;
}
您需要重写equals方法,以便java知道如何比较两个
MyComplex
对象。现在,它不知道您想要基于real
和imag
值比较对象
@Override
public boolean equals(Object o) {
// If the object is compared with itself then return true
if (o == this) {
return true;
}
// Check if o is an instance of MyComplex
if (!(o instanceof MyComplex)) {
return false;
}
// typecast o to MyComplex so that we can compare data members
MyComplex c = (MyComplex) o;
// Compare the data members and return accordingly
return Double.compare(real, c.getReal()) == 0
&& Double.compare(imag, c.getImag()) == 0;
}
您需要实现
equals
方法,让java知道何时将包含相同值的不同对象视为相等。您向我们展示的类代码是不完整的。否则,错误消息中的输出将不同(它不会显示数字!)@jokster这可能就是Ziemek写“这是相关代码的一部分”的原因。您需要实现equals
方法,让java知道何时将包含相同值的不同对象视为相等。您向我们展示的类代码是不完整的。否则,错误消息中的输出将不同(它不会显示数字!)@jokster这可能就是Ziemek写“这是相关代码的一部分”的原因。