CHA*_*COX 2 java tostring complex-numbers
我在Java中做了一个非常基本的Complex Numbers类,但是当我测试我的add和multiply函数时,我没有得到我期望的结果.我不明白什么是错的或如何解决它.
当我运行程序时,我得到以下输出:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
您需要覆盖类中的toString方法ComplexNumber:
@Override
public String toString() {
return real + " + i*" + imaginary;
}
Run Code Online (Sandbox Code Playgroud)
你的.add()&.multiply()方法返回一个ComplexNumber对象.默认情况下,
System.out.println("a*b :" + c1.multiply(c2));
Run Code Online (Sandbox Code Playgroud)
评估为
System.out.println("a*b :" + c1.multiply(c2).toString());
Run Code Online (Sandbox Code Playgroud)
该toString()方法继承自Object该类(因为所有类都继承自Object).而且,由于你不覆盖在它ComplexNumber的类,你从默认的返回值Object的toString()方法:
ClassName@hashCodeOfTheObject
Run Code Online (Sandbox Code Playgroud)
编辑:
toString()返回一个String.更改
ComplexNumber c1plusc2 = c1.add(c2).toString();
ComplexNumber c1timesc2 = c1.multiply(c2).toString();
Run Code Online (Sandbox Code Playgroud)
至
String c1plusc2 = c1.add(c2).toString();
String c1timesc2 = c1.multiply(c2).toString();
Run Code Online (Sandbox Code Playgroud)
输出:
a+b :0.0 + i*2.5
a*b :-2.0 + i*-1.5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |