写一个复数类,可实现复数对象的构造及复数间加、减、乘法运算。包含注释。
class Complex{
double real,im;
Complex(double r, double m){ real=r; im=m; } //构造复数类型
Complex(){ real=im=0; }
public void add(Complex b){ //加法运算
System.out.print(this+" + "+b+" = ");
this.real=this.real+b.real; //this对象,保存了结果
this.im=this.im+b.im;
System.out.println(this);
}
public void minus(Complex b){ //减法运算
System.out.print(this+" - "+b+" = ");
this.real=this.real-b.real;
this.im=this.im-b.im;
System.out.println(this);
}
public void multiplication(Complex b) { //乘法运算
System.out.print(this+" * "+b+" = ");
this.real=this.real*b.real-this.im*b.im;
this.im=this.im*b.real+this.real*b.im;
System.out.println(this);
}
public String toString(){ //两种输出格式,可以自行删除注释符号测试一下两者的不同
//return "("+real+"+"+im+"i"+")"; //一般的输出格式
return "("+String.format("%.2f", real)+"+"+String.format("%.2f", im)+"i"+")";//限制了有效位数的输出格式
}
}
//测试类
class Test3{
public static void main(String[] args){
Complex a=new Complex(1,1);
Complex b=new Complex(3.4,2.7);
a.add(b); a.minus(b); a.multiplication(b);
}
}
这是使用第二种toString保留有效位数的输出格式的输出:
(1.00+1.00i) + (3.40+2.70i) = (4.40+3.70i)
(4.40+3.70i) - (3.40+2.70i) = (1.00+1.00i)
(1.00+1.00i) * (3.40+2.70i) = (0.70+5.29i)
这是使用第一种toString一般输出格式的输出:
(1.0+1.0i) + (3.4+2.7i) = (4.4+3.7i)
(4.4+3.7i) - (3.4+2.7i) = (1.0000000000000004+1.0i)
(1.0000000000000004+1.0i) * (3.4+2.7i) = (0.7000000000000011+5.290000000000003i)