**复数**
数据:实部 虚部
ComplexNum类,私有(private)变量,用getter和setter访问与修改,用toString函数转为字符串
有参构造函数,传入实部和虚部创建复数ComplexNumber对象。
无参构造函数,创建复数0+0i,通过调用有参构造函数创建。
成员函数:模长,共轭,开方,加减乘除
类函数:加减乘除
成员函数需要通过ComplexNumber对象来调用,表示得到某个复数的模长、共轭、开方值,或者这个复数对象加上另一个复数得到的值,没有返回值,是对自身的修改。
类函数由static关键字修饰,则可以直接调用,或者在另一个类中通过ComplexNumber类名就可以调用,表示两个复数相加的值,返回值就是ComplexNumber对象,表示运算结果。
(类函数又叫静态函数,不能调用类中的其他成员变量和函数,只能调用类变量和类函数)
(成员函数可以调用类中的其他函数,也可以调用类函数)
代码:
packagecomplexNumber;public classComplexNumber {//成员变量
private doublerealPart;private doubleimaginaryPart;publicComplexNumber() {//TODO Auto-generated constructor stub
this(0,0);
}public ComplexNumber(double real, doubleimaginary) {this.realPart =real;this.imaginaryPart =imaginary;
}public voidadd(ComplexNumber number) {this.realPart +=number.realPart;this.imaginaryPart +=number.imaginaryPart;
}public staticComplexNumber add(ComplexNumber number1, ComplexNumber number2) {double real = number1.realPart +number2.realPart;double imag = number1.imaginaryPart +number2.imaginaryPart;return newComplexNumber(real, imag);
}public voidsubtract(ComplexNumber number) {this.realPart -=number.realPart;this.imaginaryPart -=number.imaginaryPart;
}public staticComplexNumber subtract(ComplexNumber number1, ComplexNumber number2) {double real = number1.realPart -number2.realPart;double imag = number1.imaginaryPart -number2.imaginaryPart;return newComplexNumber(real, imag);
}//(a+bi)*(c+di) = (ac-bd) + (bc+ad)i
public voidmultiply(ComplexNumber number) {this.realPart = this.realPart * number.realPart - this.imaginaryPart *number.imaginaryPart;this.imaginaryPart = this.imaginaryPart * number.realPart + this.realPart *number.imaginaryPart;
}public staticComplexNumber multiply(ComplexNumber number1, ComplexNumber number2) {double real = number1.realPart * number2.realPart - number1.imaginaryPart *number2.imaginaryPart;double imag = number1.imaginaryPart * number2.realPart - number1.realPart *number2.imaginaryPart;return newComplexNumber(real, imag);
}public voiddivide(ComplexNumber number) {//分母
double denominator =number.magnitude();this.realPart = this.realPart * number.realPart + this.imaginaryPart *number.imaginaryPart;this.realPart /=denominator;this.imaginaryPart = (this.imaginaryPart * number.realPart - this.realPart *number.imaginaryPart);this.imaginaryPart /=denominator;
}public staticComplexNumber divide(ComplexNumber number1, ComplexNumber number2) {double denominator =number2.magnitude();double real = number1.realPart * number2.realPart + number1.imaginaryPart *number2.imaginaryPart;double imag = (number1.imaginaryPart * number2.realPart - number1.realPart *number2.imaginaryPart);return new ComplexNumber(real / denominator, imag /denominator);
}public doublemagnitude() {return Math.sqrt(this.realPart*this.realPart + this.imaginaryPart*this.imaginaryPart);
}publicComplexNumber conjugate() {return new ComplexNumber(this.realPart, - this.imaginaryPart);
}public doublegetRealPart() {returnrealPart;
}public void setRealPart(doublerealPart) {this.realPart =realPart;
}public doublegetImaginaryPart() {returnimaginaryPart;
}public void setImaginaryPart(doubleimaginaryPart) {this.imaginaryPart =imaginaryPart;
}
@OverridepublicString toString() {if(this.imaginaryPart < 0)return "ComplexNumber " + realPart + "i" +imaginaryPart;return "ComplexNumber " + realPart + "i + " +imaginaryPart;
}
// 主函数,测试一下这个类public static voidmain(String[] args) {
ComplexNumber num1= new ComplexNumber(3, 4);
ComplexNumber num2= new ComplexNumber(5, 12);
System.out.println("num1 : " +num1.toString());
System.out.println("num1的模长为:"+num1.magnitude());
System.out.println("num1的共轭为:"+num1.conjugate());
ComplexNumber num3=ComplexNumber.add(num1, num2);
System.out.println("num3 = num1 + num2 = " +num3.toString());
num1.add(num2);
System.out.println("num1
ComplexNumber num4=ComplexNumber.subtract(num1, num2);
System.out.println("num4 = num1 - num2 = " +num4.toString());
System.out.println("num2 : " +num2.toString());
System.out.println("num2的模长为:"+num2.magnitude());
System.out.println("num2的共轭为:"+num2.conjugate());
}
}
运行结果:
num1 : ComplexNumber 3.0i + 4.0
num1的模长为:5.0
num1的共轭为:ComplexNumber 3.0i-4.0
num3 = num1 + num2 = ComplexNumber 8.0i + 16.0
num1
num4 = num1 - num2 = ComplexNumber 3.0i + 4.0
num2 : ComplexNumber 5.0i + 12.0
num2的模长为:13.0
num2的共轭为:ComplexNumber 5.0i-12.0