/** * @Author: Yeman * @Date: 2021-09-23-9:03 * @Description: */ class Complex{ private double realPart; //复数的实部 private double imaginaryPart; //复数的虚部 public Complex() { //空参构造器 } public Complex(double realPart, double imaginaryPart) { this.realPart = realPart; this.imaginaryPart = imaginaryPart; } //属性的get、set方法 public double getRealPart() { return realPart; } public void setRealPart(double realPart) { this.realPart = realPart; } public double getImaginaryPart() { return imaginaryPart; } public void setImaginaryPart(double imaginaryPart) { this.imaginaryPart = imaginaryPart; } //加法运算 public Complex add(Complex otherComplex){ if (otherComplex != null) { return new Complex(this.getRealPart() + otherComplex.getRealPart(),this.getImaginaryPart() + otherComplex.getImaginaryPart()); }else throw new RuntimeException("参与运算的对象为空!"); } //减法运算 public Complex decrease(Complex otherComplex){ if (otherComplex != null) { return new Complex(this.getRealPart() - otherComplex.getRealPart(),this.getImaginaryPart() - otherComplex.getImaginaryPart()); }else throw new RuntimeException("参与运算的对象为空!"); } //乘法运算 public Complex multiply(Complex otherComplex){ if (otherComplex != null) { double newReal = this.getRealPart() * otherComplex.getRealPart() - this.getImaginaryPart() * otherComplex.getImaginaryPart(); double newImaginary = this.getImaginaryPart() * otherComplex.getRealPart() + this.getRealPart() * otherComplex.getImaginaryPart(); return new Complex(newReal,newImaginary); }else throw new RuntimeException("参与运算的对象为空!"); } //除法运算 public Complex divide(Complex otherComplex){ if (otherComplex != null) { if (otherComplex.getRealPart() != 0 && otherComplex.getImaginaryPart() != 0){ double newReal = (this.getRealPart() * otherComplex.getRealPart() + this.getImaginaryPart() * otherComplex.getImaginaryPart()) / (otherComplex.getRealPart() * otherComplex.getRealPart() + otherComplex.getImaginaryPart() * otherComplex.getImaginaryPart()); double newImaginary = (this.getImaginaryPart() * otherComplex.getRealPart() - this.getRealPart() * otherComplex.getImaginaryPart()) / (otherComplex.getRealPart() * otherComplex.getRealPart() + otherComplex.getImaginaryPart() * otherComplex.getImaginaryPart()); return new Complex(newReal,newImaginary); }else throw new RuntimeException("除数不能为0!"); }else throw new RuntimeException("参与运算的对象为空!"); } //取模 public double delivery(){ return Math.sqrt(this.getRealPart() * this.getRealPart() + this.getImaginaryPart() * this.getImaginaryPart()); } //幅度值(角度) public double angle(){ double atan; if (this.getRealPart() != 0) { //注意,该处double型变量若有进行其他操作,则不能以此方式判断其等于0,应该是其绝对值小于某个很小的数;而这当前情景下,其实精度问题并不影响,因此可以这样写 atan = Math.atan(this.getImaginaryPart() / this.getRealPart()); }else { if (this.getImaginaryPart() > 0) { atan = Math.PI / 2; }else if (this.getImaginaryPart() < 0){ atan = -Math.PI / 2; }else atan = Math.atan(0); } return atan; } } //测试主类 public class ComplexTest { public static void main(String[] args) { Complex complex1 = new Complex(0, 5); Complex complex2 = new Complex(3, -3); //取模测试 double delivery = complex1.delivery(); System.out.println("(" + complex1.getRealPart() + "+" + complex1.getImaginaryPart() + "i" + ")" + "的模为:" + delivery); //求角度测试 double angle = complex1.angle(); System.out.println("(" + complex1.getRealPart() + "+" + complex1.getImaginaryPart() + "i" + ")" + "的角度为:" + Math.toDegrees(angle) + "°"); //加运算 Complex add = complex1.add(complex2); System.out.println("(" + complex1.getRealPart() + "+" + complex1.getImaginaryPart() + "i" + ")" + "+" + "(" + complex2.getRealPart() + complex2.getImaginaryPart() + "i" + ")" + "=" + "(" + add.getRealPart() + "+" + add.getImaginaryPart() + "i" + ")"); //减运算 Complex decrease = complex1.decrease(complex2); System.out.println("(" + complex1.getRealPart() + "+" + complex1.getImaginaryPart() + "i" + ")" + "-" + "(" + complex2.getRealPart() + complex2.getImaginaryPart() + "i" + ")" + "=" + "(" + decrease.getRealPart() + "+" + decrease.getImaginaryPart() + "i" + ")"); //乘法运算 Complex multiply = complex1.multiply(complex2); System.out.println("(" + complex1.getRealPart() + "+" + complex1.getImaginaryPart() + "i" + ")" + "x" + "(" + complex2.getRealPart() + complex2.getImaginaryPart() + "i" + ")" + "=" + "(" + multiply.getRealPart() + "+" + multiply.getImaginaryPart() + "i" + ")"); //除法运算 Complex divide = complex1.divide(complex2); System.out.println("(" + complex1.getRealPart() + "+" + complex1.getImaginaryPart() + "i" + ")" + "/" + "(" + complex2.getRealPart() + complex2.getImaginaryPart() + "i" + ")" + "=" + "(" + divide.getRealPart() + "+" + divide.getImaginaryPart() + "i" + ")"); } }