Java实现复数Complex的加减乘除运算、取模、求幅角角度

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料)


/*** @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" + ")");}
}

在这里插入图片描述

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

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

相关文章

linux 域账户密码忘记,linux基础命令-用户域用户组管理

//与用户相关的配置文件&#xff1a;/etc/passwd: #用户的配置文件&#xff0c; 保存用户账户的基本信息/etc/shadow #用户影子口令文件一、用户帐号文件——passwd1.“/etc/passwd”文件是UNIX安全的关键文件之一。该文件用于用户登录时效验用户的登录名、加密的口令数据项、…

Java集合(8)--集合工具类Collections

Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作&#xff0c;还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 排序操作 reverse(List)&#xff1a;反转 List 中元素的顺…

Java程序员应在2018年学习的3种JVM语言

如果您是Java程序员&#xff0c;并且想学习更多的编程语言以扩展您的知识和技能&#xff0c;但是不确定选择哪种编程语言&#xff0c;那么您来对地方了。 在本文中&#xff0c;我将分享Java程序员可以在2018年学习的3种JVM语言以及为什么要学习它们。 成为多语种开发人员的素质…

Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用

文章目录泛型的概念集合中使用泛型自定义泛型结构泛型在继承上的体现通配符的使用泛型的概念 集合容器类在设计阶段/声明阶段不能确定这个容器实际存的是什么类型的对象&#xff0c;所以在JDK1.5之前只能把元素类型设计为Object&#xff0c;JDK1.5之后使用泛型来解决。因为这个…

linux 内存 面试,【Linux内存面试题】面试问题:查看机器配置命… - 看准网

1、查看内存大小solari&#xff1a;prtconf -vp | grep Memlinux &#xff1a;grep MemTotal /proc/meminfo2、查看硬盘大小solari&#xff1a;df -klinux &#xff1a;fdisk -l[rootssoldap ~]# fdisk -lDisk /dev/sda: 146.6 GB, 146685296640 bytes255 heads, 63 sectors/tr…

蚂蚁组件 axure 蚂蚁_蚂蚁属性细微差别

蚂蚁组件 axure 蚂蚁每隔一段时间&#xff0c;我会想起Ant属性的一些细微差别 &#xff0c;一旦忘记它们&#xff0c;在与Ant交互时会引起混乱。 特别是&#xff0c; Ant属性 通常是不可变的 &#xff08;不包括Ant 1.8以来的局部属性 &#xff09;&#xff0c;并且在其第一次设…

JavaIO流(1)--File类的使用

文章目录File类概述常用构造器常用方法File类概述 File类能新建、删除、重命名文件和目录&#xff0c;但不能访问文件内容本身&#xff0c;如果需要访问文件内容本身&#xff0c;则需要使用后续的输入/输出流。 要在Java程序中表示一个真实存在的文件或目录&#xff0c;那么必…

linux抓包提示没有权限,linux下wireshark不用sudo权限抓包包

ubuntu安装了wireshark&#xff0c;发现打不开网络接口&#xff0c;后来从网上得知要用sudo从命令行执行&#xff0c;确实可以&#xff0c;但是执行过程中一直要开一个命令行窗口&#xff0c;不爽&#xff0c;想直接用单击图标的方法运行之&#xff0c;在网上查询找到以下两个方…

Http基本身份验证在Spring Security中如何工作?

在上一篇文章中&#xff0c;您学习了如何在基于Spring安全性的Java应用程序中启用Http基本身份验证 &#xff0c;现在&#xff0c;我们将进一步进一步了解http基本身份验证在Spring安全性中的工作原理。 如果您还记得的话&#xff0c;当您使用HTTP Basic进行身份验证时&#xf…

JavaIO流(2)--IO流原理、流的分类及节点流文件流操作

文章目录IO流简介IO流原理流的分类IO 流体系节点流和处理流节点流操作IO流简介 I/O是Input/Output的缩写&#xff0c; I/O技术是非常实用的技术&#xff0c;用于处理设备之间的数据传输。如读/写文件&#xff0c;网络通讯等。 Java程序中&#xff0c;对于数据的输入/输出操作…

linux权限体系有哪些角色,详解Linux下系统权限

一、权限概述1. 什么是权限权限&#xff1a;在计算机系统中&#xff0c;权限是指某个计算机用户具有使用软件资源的权利。软件资源&#xff1a;Linux系统中&#xff0c;一切皆文件&#xff01;SO&#xff0c;这里的软件资源就是文件资源。所以&#xff0c;我们今天所讲的权限&a…

试用期java_Java 7试用资源

试用期javaJava 7为完成使用后需要关闭的资源&#xff08;例如文件&#xff0c;流&#xff0c;数据库连接和套接字&#xff09;提供了更好的资源管理。 这种语言构造称为try-with-resources语句。 完成这项工作的机制称为AutoCloseable接口。 Java 7资源类均实现此接口。 该接口…

让你的对象跑出内存,写入到磁盘或者进行网络传输,一文掌握Java对象序列化

文章目录对象序列化是什么如何让对象可序列化让对象跑出内存对象序列化是什么 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流&#xff0c;从而允许把这种二进制流持久地保存在磁盘上&#xff0c;或通过网络将这种二进制流传输到另一个网络节点。当其它程序获…

JDK 9:NotNullOrElse方法已添加到Objects类

JDK 9向Objects类添加了一些新方法&#xff0c;包括本文中突出显示的两个static方法&#xff1a; requireNonNullElse&#xff08;T&#xff0c;T&#xff09;和requireNonNullElseGet&#xff08;T obj&#xff0c;Supplier <&#xff1f;extended T>供应商&#xff09;…

linux下删除只读文件,linux – 我无法删除文件’rm:无法删除X只读文件系统’

我正在尝试删除rdiff备份文件夹,因为备份过程中出现了一些问题,需要删除它的历史记录并重试.但是,当我跑&#xff1a;rm -r -f rdiff-backup-data我在一些文件上得到以下内容&#xff1a;rm: cannot remove X: Read-only file system这是我运行mount时得到的&#xff1a;/dev/s…

让你的数据和对象有源有出路,一文打尽,Java常用IO流处理流(处理字节流文件流)缓冲流、转换流、对象流等

文章目录缓冲流转换流标准输入输出流打印流数据流对象流随机存取文件流Java NIO缓冲流 为了提高数据读写的速度&#xff0c;Java API提供了带缓冲功能的流类&#xff0c;在使用这些流类时&#xff0c;会创建一个内部缓冲区数组&#xff0c;缺省使用8192个字节(8Kb)的缓冲区。 …

异步重试_异步重试模式

异步重试当您有一段经常失败且必须重试的代码时&#xff0c;此Java 7/8库提供了丰富且简洁的API以及针对此问题的快速且可扩展的解决方案&#xff1a; ScheduledExecutorService scheduler Executors.newSingleThreadScheduledExecutor(); RetryExecutor executor new Async…

linux网卡e1000下载,Linux E1000网卡驱动分析

本分析主要针对e1000网卡,驱动源码为7.3.20-k2。本文的目的不是为了讲述如何编写驱动程序,主要是分析网卡驱动内部的实现机制。Linux-千兆网卡驱动实现机制浅析作者: Minit, 出处:博客, 责任编辑: 罗丽艳,2009-03-29 00:001.引言本分析主要针对e1000网卡&#xff0c;驱动源码为…

迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

文章目录网络编程概述网络通信要素要素一IP和端口号要素二网络协议TCP网络编程UDP网络编程URL网络编程Java网络编程基础网络编程概述 Java是Internet上的语言&#xff0c;它从语言级上提供了对网络应用程序的支持&#xff0c;程序员能够很容易开发常见的网络应用程序。 Java提…

Linux脚本双引号字符去除,shell命令去除字符串里双引号

echo \"refs/changes/84/727284/1\" | sed s/\"//gshell变量内字符替换和变量字符修改a12345123#将${a}里的第一个123替换为321b${a/123/321};echo "echo variable a"echo $aecho "echo variable b"echo $ba12345123#将${a}里的所有123替换…