复数的四则运算(java版)

复数的四则运算(java版)

目录

  • 复数的四则运算(java版)
    • 介绍
    • 复数的四则运算
    • 实现思路
    • 代码
      • 1、封装复数类
      • 2、测试复数类
      • 3、代码测试结果

介绍

  • 复数,为实数的延伸,它使任一多项式方程都有根。复数当中有个“虚数单位 ” i,它是−1的一个平方根,即 i^2=−1。任一复数都可表达为 **x+yi,**其中x及y皆为实数,分别称为复数之“实部”和“虚部”。

  • 四则运算,是一种简单基本的数学运算,即 加法 、 减法 、 乘法 和 除法 四种运算。

复数的四则运算

要想实现复数的四则运算,我们就要先知道复数的四则运算分别都是如何计算的。

两个复数的四则运算(数学表达式)

复数一:a+bi  
复数二:c+di加法 a+bi + c+di = (a+c)+(b+d)i
减法 a+bi - (c+di) = (a-c)+(b+d)i
乘法 a+bi * (c+di) = (ac-bd) + (ad+bc)i
除法 (a+bi)/(c+di) = [(ac+bd)+(bc-ad)i]/(c^2+d^2)

实现思路

由于 java程序设计语言 是一门面向对象编程的,所以我们可以考虑把 复数 封装成一个类,然后我们就可以实例化这个类,创建 复数 对象。我们在封装这个类的时候就可以思考该怎么封装,要去思考 复数 这个对象 中应该具备什么样的属性和特征。

  • 状态特征

状态特征也就是 复数对象 拥有的属性,应该有 实部虚部

  • 行为特征

行为特征也就是 复数对象 的具备方法,除了构造和setter and getter 方法,还应该有 实现复数相加的方法add(),实现复数相减的方法sub(),实现 复数相乘的方法mul(),实现复数相除的除法div(),还有重写toString()的方法。

代码

1、封装复数类

//复数的四则运算
public class Complex {//实部和虚部的定义//定义成double比较好的的原因之一是因为 有除法运算private double realPart;private double imagePart;//构造方法public Complex() {}public Complex(double realPart, double imagePart) {this.realPart = realPart;this.imagePart = imagePart;}//setter and getterpublic double getImagePart() {return imagePart;}public void setImagePart(double imagePart) {this.imagePart = imagePart;}public double getRealPart() {return realPart;}public void setRealPart(double realPart) {this.realPart = realPart;}//复数的加法public Complex add(Complex complexNumber) {if (complexNumber == null) {System.out.println("复数对象输入错误");return new Complex();}double newImagePart = this.getImagePart() + complexNumber.getImagePart();double newRealPart = this.getRealPart() + complexNumber.getRealPart();return new Complex(newRealPart, newImagePart);}//复数的减法public Complex sub(Complex complexNumber) {if (complexNumber == null) {System.out.println("复数对象输入错误");return new Complex();}double newImagePart = this.getImagePart() - complexNumber.getImagePart();double newRealPart = this.getRealPart() - complexNumber.getRealPart();return new Complex(newRealPart, newImagePart);}//复数的乘法public Complex mul(Complex complexNumber) {if (complexNumber == null) {System.out.println("输入复数对象错误");return new Complex();}double newRealPart = this.getRealPart() * complexNumber.getRealPart() - this.getImagePart() * complexNumber.getImagePart();double newImagePart = this.getRealPart() * complexNumber.getImagePart() + this.getImagePart() * complexNumber.getRealPart();return new Complex(newRealPart, newImagePart);}public Complex division(Complex complexNumber) {if (complexNumber == null) {System.out.println("输入复数对象错误");return new Complex();}double newRealPart = (this.getRealPart() * complexNumber.getRealPart() + this.getImagePart() * complexNumber.getImagePart()) / (complexNumber.getRealPart() * complexNumber.getRealPart() + complexNumber.getImagePart() * complexNumber.getImagePart());double newImagePart = (-this.getRealPart() * complexNumber.getImagePart() + this.getImagePart() * complexNumber.getRealPart())/ (complexNumber.getRealPart() * complexNumber.getRealPart() + complexNumber.getImagePart() * complexNumber.getImagePart());return new Complex(newRealPart, newImagePart);}//重写toString方法public String toString(){if(this.imagePart>0){return this.realPart+"+"+this.imagePart+"i"; //如果是虚部是正数,需要手动添加 +}else if(this.imagePart<0){return this.realPart+this.imagePart+"i";//如果虚部是负数,不用给你手动添加 -(运算的结果自带)}else return this.realPart+" ";}}

2、测试复数类

import java.util.Scanner;//测试封装的复数类,实现负数的四则运算
public class ComplexTest {//这里我们可以采取从键盘中输入复数的实部和虚部public static void main(String[] args) {double realPart ;double imagePart ;Scanner s = new Scanner(System.in);System.out.print("输入第一个复数的实部:");realPart = s.nextDouble();System.out.print("输入第一个复数的虚部:");imagePart = s.nextDouble();Complex complex1 = new Complex(realPart,imagePart);System.out.print("输入第二个复数的实部:");realPart = s.nextDouble();System.out.print("输入第二个复数的虚部:");imagePart = s.nextDouble();Complex complex2 = new Complex(realPart,imagePart);//测试复数的加减乘除System.out.println("加法:"+ complex1.add(complex2));System.out.println("减法:"+complex1.sub(complex2));System.out.println("乘法:"+complex1.mul(complex2));System.out.println("除法:"+complex1.division(complex2));}
}

3、代码测试结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/87381.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows系统配置tcp最大连接数

打开注册表 运行->regedit HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters目录下 增加一个MaxUserPort&#xff08;默认值是5000&#xff0c;端口范围是1025至5000&#xff09;MaxUserPort设置为65534&#xff08;需重启服务器&#xff09; 执行dos命令&…

Apache Celeborn 让 Spark 和 Flink 更快更稳更弹性

摘要&#xff1a;本文整理自阿里云/数据湖 Spark 引擎负责人周克勇&#xff08;一锤&#xff09;在 Streaming Lakehouse Meetup 的分享。内容主要分为五个部分&#xff1a; Apache Celeborn 的背景Apache Celeborn——快Apache Celeborn——稳Apache Celeborn——弹Evaluation…

【优化算法】Python实现面向对象的遗传算法

遗传算法 遗传算法(Genetic Algorithm)属于智能优化算法的一种&#xff0c;本质上是模拟自然界中种群的演化来寻求问题的最优解。与之相似的还有模拟退火、粒子群、蚁群等算法。 在具体介绍遗传算法之前&#xff0c;我们先来了解一些知识&#x1f9c0; DNA&#xff1a; 携带有…

解决jupyter notebook可以使用pytorch而Pycharm不能使用pytorch的问题

之前我是用的这个目录下的Python 开始更新目录 1、 2、 3、

【精算研究01/10】 计量经济学的性质和范围

一、说明 计量经济学是使用统计方法来发展理论或测试经济学或金融学中的现有假设。计量经济学依赖于回归模型和零假设检验等技术。计量经济学也可以用来预测未来的经济或金融趋势。 图片来源&#xff1a;https://marketbusinessnews.com 二、 计量经济之简介 计量经济学是对经济…

需求变化频繁的情况下,如何实施自动化测试

一.通常来说&#xff0c;具备以下3个主要条件才能开展自动化测试工作: 1.需求变动不频繁 自动化测试脚本变化的频率决定了自动化测试的维护成本。如果需求变动过于频繁&#xff0c;那么测试人员就需要根据变动的需求来不断地更新自动化测试用例&#xff0c;从而适应新的功能。…

基于水基湍流算法优化的BP神经网络(预测应用) - 附代码

基于水基湍流算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于水基湍流算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.水基湍流优化BP神经网络2.1 BP神经网络参数设置2.2 水基湍流算法应用 4.测试结果&#xff1a;5…

计算机视觉:深层卷积神经网络的构建

本文重点 上一节课程中我们学习了单卷积层的前向传播,本次课程我们构建一个具有三个卷积层的卷积神经网络,然后从输入(39*39*3)开始进行三次卷积操作,我们来看一下每次卷积的输入和输出维度的变化。 第一层 第一层使用3*3*3的过滤器来提取特征,那么f[1]=3,然后步长s[…

【技术】SpringBoot Word 模板替换

SpringBoot Word 模板替换 什么是 Word 模板替换如何实现 Word 模板替换 什么是 Word 模板替换 模板一般是具有固定格式的内容&#xff0c;其中一部分需要替换。Word 模板通俗的讲是以 Word 的形式制作模板&#xff0c;固定格式和内容&#xff0c;然后将其中的一部分数据替换掉…

业务系统架构实践总结

我从2015年起至今2022年&#xff0c;在业务平台&#xff08;结算、订购、资金&#xff09;、集团财务平台&#xff08;应收应付、账务核算、财资、财务分析、预算&#xff09;、本地生活财务平台&#xff08;发票、结算、预算、核算、稽核&#xff09;所经历的业务系统研发实践…

【科研论文配图绘制】task5 SciencePlots绘图包入门

【科研论文配图绘制】task5 SciencePlots绘图包入门 task5主要学习了SciencePlots拓展包的出图样式&#xff0c;掌握SciencePlots的安装及具体使用。 SciencePlots作为一个专门用于科研论文绘图的第三方拓展工具包&#xff0c;提供了主流英文科技 期刊(如 Nature、Science 和 …

SSM(Spring+SpringMVC+MyBatis)整合

目录 1、提出问题 2、解决问题 3、相关文件 1、提出问题 SSM&#xff08;SpringSpringMVCMyBatis&#xff09;的开发&#xff0c;MyBatis在没有与Spring和SpringMVC整合的时候&#xff0c;是单独使用&#xff0c;单独配置。 Spring和SpringMVC的整合是无缝衔接的&#xff0…