Java return 中的加法和乘法函数结果错误

Add and Multiply Functions in Java return wrong result

我在 Java 中做一个非常基本的 复数 class 但是当我测试我的加法和乘法函数时我没有得到结果我预计。我不明白哪里出了问题或如何解决。

当我 运行 程序时,我得到以下输出:

a+b: ComplexNumber@1540e19d

a*b: ComplexNumber@677327b6

我应该得到两个复数的正确加法和乘法(当然要遵循复数的规则)

如有任何帮助,我们将不胜感激!提前致谢。

代码如下:

public class ComplexNumber {

private double real;
private double imaginary;

public ComplexNumber(double r, double i) {
    real = r;
    imaginary = i;
}

public double real() {
    return real;
}

public double imaginary() {
    return imaginary;
}

public ComplexNumber add(ComplexNumber c) {
    double newr = real + c.real();
    double newi = imaginary + c.imaginary();
    return new ComplexNumber(newr, newi);
}
public ComplexNumber multiply(ComplexNumber c) {
    double newr = real*c.real() - imaginary*c.imaginary();
    double newi = real*c.imaginary() + imaginary*c.real();
    return new ComplexNumber(newr, newi);
}

 public static void main(String[] args) {

    ComplexNumber c1 = new ComplexNumber(1.0, 2.0);
    ComplexNumber c2 = new ComplexNumber(-1.0, 0.5);
    String c1plusc2 = c1.add(c2).toString();
    String c1timesc2 = c1.multiply(c2).toString();

    System.out.println("a+b :" + c1plusc2);
    System.out.println("a*b :" + c1timesc2);

    }
    }

您需要覆盖 ComplexNumber class:

中的 toString 方法
@Override
public String toString() {
    return real + " + i*" + imaginary;
}

您的 .add().multiply() 方法 return 一个 ComplexNumber 对象。默认情况下,

System.out.println("a*b :" + c1.multiply(c2));

计算为

System.out.println("a*b :" + c1.multiply(c2).toString());

toString() 方法继承自 Object class(因为所有 class 都继承自 Object)。由于您没有在 ComplexNumber class 中 覆盖 它,您从 ObjecttoString()方法:

ClassName@hashCodeOfTheObject

编辑:

toString()return一个String。变化

ComplexNumber c1plusc2 = c1.add(c2).toString();
ComplexNumber c1timesc2 = c1.multiply(c2).toString();

String c1plusc2 = c1.add(c2).toString();
String c1timesc2 = c1.multiply(c2).toString();

输出:

a+b :0.0 + i*2.5
a*b :-2.0 + i*-1.5