Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 断言错误-虚数和实数加法器_Java_Junit5_Assertion_Real Number - Fatal编程技术网

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写“这是相关代码的一部分”的原因。