**复数**

数据:实部 虚部

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

定义复数java_自定义数据类型 复数的Java实现相关推荐

  1. go函数详解:函数定义、形参、返回值定义规范、函数内存分析、不支持重载、支持可变参数、基本数据类型和数组默认都是值传递的、支持自定义数据类型、函数返回值命名

    引入 [1]为什么要使用函数: 提高代码的复用型,减少代码的冗余,代码的维护性也提高了 [2]函数的定义: 为完成某一功能的程序指令(语句)的集合,称为函数. [3]基本语法 func 函数名(形参列 ...

  2. Go支持自定义数据类型:使用type来定义,类似于数据类型的一个别名

    为了简化数据类型定义,Go支持自定义数据类型 基本语法: type 自定义数据类型名 数据类型 可以理解为 : 相当于起了一个别名 例如:type mylnt int ----->这时mylnt ...

  3. python定义一个复数类complex、并实现复数相加_用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算...

    题目: 用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加.减运算 复数具有实部和虚部两部分,如2+5i就是一个复数,其中2为实部,5i为虚部;两复数相加时,实部与实部相加 ...

  4. java程序设计复数运算_Java实现复数运算

    <Java实现复数运算>由会员分享,可在线阅读,更多相关<Java实现复数运算(2页珍藏版)>请在人人文库网上搜索. 1.定义一个复数类complex,它的内部具有两个实例变量 ...

  5. 剑仙java_【剑仙教程】易语言的结构体。自定义数据类型。

    1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言 ...

  6. 抽象数据类型“复数”的实现

    例如:抽象数据类型"复数"的实现 typedef struct{float realpart; /*实部*/float imagpart; }Complex /*定义复数抽象类型, ...

  7. c语言抽象数据类型复数,抽象数据类型复数的实现..doc

    抽象数据类型复数的实现. 石家庄经济学院 实 验 报 告 学 院: 信息工程学院 专 业: 计算机 信息工程学院计算机实验中心制 <数据结构>实验报告姓名张文楚学号409109070515 ...

  8. java注解定义常量_java自定义注解

    1.Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型.该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰的c ...

  9. 【剑仙教程】易语言的结构体。自定义数据类型。

    1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言 ...

  10. Android AIDL使用介绍(2)自定义数据类型的传递

    1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int.long.char.boolean 等); String字符串: CharSequence字符序列: List ...

最新文章

  1. [黑客技术]提权总结21种办法篇
  2. c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf
  3. 堆的构建、堆的插入、堆的删除、堆排序
  4. Jquery特殊效果
  5. skipfish 主动扫描web安全评估工具
  6. 配置Struts2的异常处理
  7. c++ 类的sizeof
  8. 杭州SEO大熊:百度分享插件的SEO研究心得
  9. openwrt x86 登录不上_求助,关于OpenWRT外接硬盘不识别的问题
  10. 日期选择窗口_Excel攻略|添加日期、智能填充、多窗口同步、两列(行)交换
  11. Android XmlPullParser 笔记
  12. 怎么消除间隔间的空白字符
  13. 在Idea中连接数据库并生成实体类(mybatis逆向生成实体类)
  14. 人工智能和金融是天作之合的5个理由
  15. 全网最新springCloud快速练手学习项目——简单超易懂系列
  16. 天刃_张志刚_SEO优化技巧
  17. 解读MT7620A上的DTS文件
  18. 合振动的初相位推导_两个同方向、同频率的简谐振动表达式为和,试求它们的合振动的振幅和初相位。...
  19. 天池竞赛——工业蒸汽量预测(完整代码分享)
  20. 6g运行和8g运行有什么差别

热门文章

  1. 纯HTML5+CSS3仿B站首页
  2. 【计算机网络】网络层 : 数据交换方式 ( 电路交换 | 报文交换 | 分组交换 )★
  3. NVR和DVR有什么区别_NVR和DVR哪个好 IP Camera
  4. 平差的理解及一种最简单的高斯马尔科夫模型(Gauss Markov Model)
  5. 固态硬盘用软件测试掉速严重,分析固态硬盘掉速原因及解决方法
  6. To install it, you can run: npm install --save element-uib/theme-chalk/index.css
  7. PPT设置自动保存时间 mac_你对着PPT抓狂的那几秒,像极了爱情(1)
  8. 制作简易的幸运转盘抽奖
  9. Android云测云真机调试平台
  10. Python 用sympy做高数题,不定积分、定积分、极限、求导样样精通!