定义复数java_自定义数据类型 复数的Java实现

**复数**

数据:实部 虚部

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基本的Java实验,用于实现复数类和一些基本操作: ```java public class ComplexNumber { private double real; private double imaginary; public ComplexNumber(double real, double imaginary) { this.real = real; this.imaginary = imaginary; } public double getReal() { return real; } public double getImaginary() { return imaginary; } public ComplexNumber add(ComplexNumber other) { return new ComplexNumber(real + other.real, imaginary + other.imaginary); } public ComplexNumber subtract(ComplexNumber other) { return new ComplexNumber(real - other.real, imaginary - other.imaginary); } public ComplexNumber multiply(ComplexNumber other) { double newReal = real * other.real - imaginary * other.imaginary; double newImaginary = real * other.imaginary + imaginary * other.real; return new ComplexNumber(newReal, newImaginary); } public ComplexNumber divide(ComplexNumber other) { double denominator = other.real * other.real + other.imaginary * other.imaginary; double newReal = (real * other.real + imaginary * other.imaginary) / denominator; double newImaginary = (imaginary * other.real - real * other.imaginary) / denominator; return new ComplexNumber(newReal, newImaginary); } public String toString() { if (imaginary < 0) { return real + " - " + (-imaginary) + "i"; } else { return real + " + " + imaginary + "i"; } } } ``` 这个类定义了一个名为ComplexNumber的复数类,包含实部和虚部。您可以通过调用实例方法来执行以下操作: - add():添加两个复数。 - subtract():从两个复数中减去一个。 - multiply():将两个复数相乘。 - divide():将两个复数相除。 - toString():将复数作为字符串返回。 以下是一个简单的示例,演示如何使用ComplexNumber类: ```java public class Main { public static void main(String[] args) { ComplexNumber c1 = new ComplexNumber(1, 2); ComplexNumber c2 = new ComplexNumber(3, 4); ComplexNumber sum = c1.add(c2); ComplexNumber difference = c1.subtract(c2); ComplexNumber product = c1.multiply(c2); ComplexNumber quotient = c1.divide(c2); System.out.println("c1: " + c1.toString()); System.out.println("c2: " + c2.toString()); System.out.println("Sum: " + sum.toString()); System.out.println("Difference: " + difference.toString()); System.out.println("Product: " + product.toString()); System.out.println("Quotient: " + quotient.toString()); } } ``` 输出结果: ``` c1: 1.0 + 2.0i c2: 3.0 + 4.0i Sum: 4.0 + 6.0i Difference: -2.0 - 2.0i Product: -5.0 + 10.0i Quotient: 0.44 + 0.08i ``` 希望这个例子能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值