此程序实现了对复数的加减乘除,输入的是实部和虚部。我分别用了c=a+b和a+=b;两个方法共同实现,代码如下,如果逻辑及代码有遗漏,欢迎随时评论,如果输入3,1则进行3+i和3+i的和为6+2i


public class Complex {//定义实部和虚部private double a;private double b;public Complex(){this(0.0,0.0);}public  Complex(double a){this(a,0.0);}public  Complex(double a,double b){this.a=a;this.b=b;}public  Complex(Complex c){this(c.a,c.b);}public double getA() {return a;}public void setA(double a) {this.a = a;}public double getB() {return b;}public void setB(double b) {this.b = b;}//a+=b;public Complex add(Complex one){this.a=this.a+one.a;this.b=this.b+one.b;return this;//或用这种方法返回return this.a+one.a}//c=a+b;public Complex add1(Complex one,Complex another){this.a=one.a+another.a;this.b=one.b+another.b;return this;}//a-=b;//先构造一个复数的相反数方法private Complex xiangfan(Complex one){return new Complex(-one.a, -one.b);}//直接进行调用public Complex jian(Complex one){return this.add(xiangfan(one));}//c=a-b;public Complex jian1(Complex one,Complex another){return this.add1(xiangfan(one),xiangfan(another));}//a*=b;public Complex cheng(Complex one){double c=0.0;double d=0.0;c=this.a*one.a-this.b*one.b;d=this.a*one.b+this.b*one.a;this.a=c;this.b=d;return this;}//c=a*b;public Complex cheng1(Complex one,Complex another){return new Complex(one).cheng(another);}// a /= b;
//      public static DIYcomplex mul(DIYcomplex one, DIYcomplex other) {
//          return new DIYcomplex(one).cheng(other);
//      }public Complex div(Complex c) {double mod = c.a * c.a - c.b * c.b;double mod1=0.0;double mod2=0.0;mod1=(this.a*c.a - this.b*c.b)/mod;mod2=(this.b*c.a - this.a*c.b)/mod;this.a=mod1;this.b=mod2;//对除数进行判断是否等于0  if(Math.abs(mod) < 1e-6) {return null;}  return this;}@Overridepublic String toString() {return "DIYcomplex [a=" + a + "+" + b + "i ]";}public static void main(String[] args) {Complex c1 = new Complex(3.0,1.0);//此刻输入的是一个复数的实部与虚部,产生一个对象就是一个复数System.out.println(c1);Complex c2 = new Complex(3.0,1.0);c2.add(c2); System.out.println(c2);Complex c3 = new Complex(3.0,1.0);c3.jian(c3);System.out.println(c3);Complex c4 = new Complex(3,1);c4.cheng(c4);System.out.println(c4); Complex c5 = new Complex(2.0,1.0);c5.div(c5);System.out.println(c5);}}

运行结果为

DIYcomplex [a=3.0+1.0i ]

DIYcomplex [a=6.0+2.0i ]
DIYcomplex [a=0.0+0.0i ]
DIYcomplex [a=8.0+6.0i ]
DIYcomplex [a=1.0+0.0i ]

最近又写了个复数的四则运算,此次采用了static静态方法,不仅使代码更加简洁,逻辑上更有了深的认识。而对于static的使用规则,我总结到只要是有一个新类出现就会使用它。代码如下:

public class Complex {private double real;private double virtual;public Complex() {}public Complex(double real) {this(real, 0.0);// 若只输入一个数就是虚部为0}public Complex(double real, double virtual) {this.real = real;this.virtual = virtual;}public Complex(Complex one) {this.real = one.real;this.virtual = one.virtual;}public double getReal() {return real;}public void setReal(double real) {this.real = real;}public double getVirtual() {return virtual;}public void setVirtual(double virtual) {this.virtual = virtual;}@Overridepublic String toString() {return "Complex [real=" + real + ", virtual=" + virtual + "]";}// a=a+b;public Complex add(Complex one) {this.real = one.real + this.real;this.virtual = one.virtual + this.virtual;return this;}public static Complex xiangfan(Complex one) {return new Complex(-one.real, -one.virtual);}// c=a+bpublic static Complex add1(Complex one, Complex other) {return new Complex(one).add(other);}// a=a-bpublic Complex jian(Complex one) {return this.add(xiangfan(one));}// c=a-bpublic static Complex jian1(Complex one, Complex other) {return new Complex(one).jian(other);}// a=a*bpublic Complex cheng(Complex one) {double c = 0.0;double d = 0.0;c = one.real * this.real - one.virtual * this.virtual;d = this.real * one.virtual + one.real * this.virtual;this.real = c;this.virtual = d;return this;}// c=a*bpublic static Complex cheng1(Complex one, Complex other) {return new Complex(one).cheng(other);}// 倒数public static Complex daoshu(Complex one) {double mod = one.real * one.real - one.virtual * one.virtual;if (Math.abs(mod) < 1e-6) {return null;}double tt = one.real / mod;double dd = one.virtual / mod;return new Complex(tt, -dd);}// c=a/bpublic static Complex div1(Complex one, Complex other) {return new Complex(one).cheng(daoshu(other));}// a=a/bpublic Complex div11(Complex c) {double mod = c.real * c.real - c.virtual * c.virtual;double mod1 = 0.0;double mod2 = 0.0;mod1 = (this.real * c.real - this.virtual * c.virtual) / mod;mod2 = (this.virtual * c.real - this.real * c.virtual) / mod;this.real = mod1;this.virtual = mod2;if (Math.abs(mod) < 1e-6) {return null;}return this;}
}

测试类

package com.mec.Complex.core;public class Text {public static void main(String[] args) {Complex complex=new Complex(3.0,1.0);   complex.add(complex);System.out.println(complex);Complex complex1=new Complex(3.0,1.0);complex1.jian(complex1);System.out.println(complex1);Complex complex2=new Complex(3.0,1.0);complex2.cheng(complex2);System.out.println(complex2);Complex complex3=new Complex(10,1);complex3.div11(complex3);System.out.println(complex3);}}

这是结果:

Complex [real=6.0, virtual=2.0]
Complex [real=0.0, virtual=0.0]
Complex [real=8.0, virtual=6.0]
Complex [real=1.0, virtual=0.0]

复数的四则运算(+,-,*,\)相关推荐

  1. 【C语言】复数的四则运算与复数运算的头文件

    目录 一.复数的四则运算 二.复数的头文件#include<complex.h> 三.一些碎碎念 一.复数的四则运算 (1)计算方法 加法:(a+bi)+(c+di)=(a+c)+(c+d ...

  2. c语言进行复数的四则运算

    c语言进行复数的四则运算 额..好像没什么好说的直接上代码吧,注意下结构体的用法 #include<stdio.h> struct complex {double re;double im ...

  3. 用C++实现复数的四则运算

    文章目录 前言 功能介绍 结果展示 代码区 前言 第一次写C++,用户界面感觉还行,内部实现不太高级,搞得能看... 想发出来留作纪念 功能介绍 这个代码包括一个复数类和四个运算函数,一个用户界面函数 ...

  4. 抽象数据类型的实现(复数的四则运算)

    简单的说一下,我是在DEV C++上实现的复数四则运算.如果学习过JAVA.C++等面向对象高级程序设计语言,那么对抽象数据类型是非常容易理解的.抽象数据类型就类似于java中的类. 废话不多说了直接 ...

  5. 复数类四则运算及插入/提取操作zrx

    在C++中,标准库本身已经对左移运算符<<和右移运算符>>分别进行了重载,使其能够用于不同数据的输入输出,但是输入输出的对象只能是 C++ 内置的数据类型(例如 bool.in ...

  6. c语言复数相加的程序,运用C语言编写复数的四则运算.docx

    .. 运用C语言编写复数的四则运算 需求分析 设计一个可进行复数运算的演示程序 实现下列六种基本运算: (1)由于输入的实部和虚部生成一个复数:(2)两个复数求和:(3)两个复数求差:(4)两个复数求 ...

  7. 复数的四则运算——C++实现

    复数的四则运算法则: 加法:(a+bi)+(c+di)=(a+c)+(b+d)i 减法:(a+b)-(c+di)=(a-c)+(b-d)i 乘法:(a+bi)*(c+di)=(ac-bd)+(bc+a ...

  8. 复数的四则运算(C语言实现)

    复数的四则运算 问题描述:设计一个可进行复数运算的演示程序. 基本要求:实现下列七种基本运算:1)由输入的实部和虚部生成一个复数:2)复数的显示:3)两个复数求和:4)两个复数求差:5)两个复数求积: ...

  9. 用Python实现复数的四则运算

    推荐一个刷题网站,体验过一段时间了,真的建议去试试. 对于Python很少有基础题库,牛客针对基础专项出题,目前还出炉了数据分析和机器学习 . 不仅是Python,还有Java.C语言C++.数据库S ...

最新文章

  1. React.js 小书 Lesson14 - 实战分析:评论功能(一)
  2. struts2中welcome-fileindex.action/welcome-file直接设置action,404的解决方案
  3. DockerSwarm 微服务部署
  4. 遇到问题描述:Android Please ensure that adb is correctly located at问题解决
  5. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
  6. 需要支持多种操作的线段树该如何确定运算顺序?
  7. 什么事计算机事实性知识,《人工智能》复习要点
  8. mysql工作中遇到的问题_mysql - 工作中碰到的问题
  9. 1 月以来 Tether 增发 47 亿 USDT,美元都去哪儿了?
  10. (android 地图实战开发)4地图偏移量解决方案
  11. 有同学问我:Fetch 和 Ajax 有什么区别?
  12. day 69 orm操作之表关系,多对多,多对一(wusir总结官网的API)
  13. Android报错: Caused by: java.lang.ClassCastException: com.github.mikephil.charting.charts.PieChart can
  14. 修改maven默认仓库(即repository)的路径
  15. Mac下如何修改IDEA的背景颜色
  16. Centos虚拟机桥接模式无法连接外网的解决
  17. 软件开发职业发展路径
  18. 在Azure的云服务器上搭建个人网站
  19. c 语言输出省份面积和高度,中国省份面积
  20. python深浅拷贝应用_简述Python的深浅拷贝以及应用场景?

热门文章

  1. tp判断数组里面是否存在某个定值
  2. FinancesOnline 2022/2023 10大IT趋势预测
  3. 推荐给 Mac 新手准备的工具套餐!
  4. 直播app开发搭建,两种很简单的网页特效实现
  5. python xlsxwriter行数_使用python库xlsxwriter库来输出各种xlsx文件的示例
  6. Unity3dPro 和免费版的区别
  7. LaTeX数学公式相关
  8. Matlab细胞识别统计,血液细胞的图像识别计数方法与流程
  9. eyoucms 1.5.5任意命令执行漏洞(0day)
  10. QQ聊天框变成方框口口口口的解决办法