java 中实现复数的加减
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中实现复数的加减相关的知识,希望对你有一定的参考价值。
题目如下: 定义一个复数类,该类包含实部和虚部属性及构造函数。类中还应包含实现复数加法、减法、乘法的方法。并在程序中使用这个类。
(1):具体代码(附注释)
复数类:
public class Complex
private float shibu;
private float xubu;
Complex()
this(0,0);
Complex(float shibu,float xubu)
this.shibu=shibu;
this.xubu=xubu;
public void Add(Complex p)
Complex result=new Complex();
result.shibu=this.shibu+p.shibu;
result.xubu=this.xubu+p.xubu;
System.out.print("加法结果为:"+result.shibu+"+"+result.xubu+"i");
public void Sub(Complex p)
Complex result=new Complex();
result.shibu=this.shibu-p.shibu;
result.xubu=this.xubu-p.xubu;
System.out.print("加法结果为:"+result.shibu+"+"+result.xubu+"i");
public void Mul(Complex p)
Complex result=new Complex();
result.shibu=this.shibu*p.shibu-this.xubu*p.xubu;
result.xubu=this.shibu*p.xubu+p.shibu*this.xubu;
System.out.print("乘法结果为:"+result.shibu+"+"+result.xubu+"i");
public static void main(String[] args)
Complex fushu1=new Complex(1,2);
Complex fushu2=new Complex(3,4);
fushu1.Add(fushu2);
fushu1.Sub(fushu2);
fushu1.Mul(fushu2);
(2):提供一个例子:
源代码:
import java.io.*;
public class Book
double sb;
double xb;
Book(double x,double y)
this.sb=x;
this.xb=y;
Book()
public static void main(String args[])
System.out.println("请输入数据:");
double a=0;
double b=0;
double c=0;
double d=0;
String s;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入第一个复述的实部:");
try
s = in.readLine();
a=Double.parseDouble(s);
catch(IOException e)
System.out.println("抛掷异常");
System.out.println("请输入第一个复述的虚部:");
try
s = in.readLine();
b =Double.parseDouble(s);
catch(IOException e)
System.out.println("抛掷异常");
System.out.println("请输入第二个复述的实部:");
try
s = in.readLine();
c =Double.parseDouble(s);
catch(IOException e)
System.out.println("抛掷异常");
System.out.println("请输入第二个复述的虚部:");
try
s = in.readLine();
d =Double.parseDouble(s);
catch(IOException e)
System.out.println("抛掷异常");
Book h;
h=new Book(a,b);
Book j;
j=new Book(c,d);
System.out.println("您输入的一个数为:");
toString(h);
System.out.println("您输入的二个数为:");
toString(j);
Book k;
k=new Book();
char z=\'y\';
do
System.out.println("请选择您要进行的计算:");
System.out.println("1 :进行加法运算");
System.out.println("2 :进行减法运算");
System.out.println("3 :进行修改");
System.out.println("4 :进行乘法运算");
System.out.println("5 :进行除法运算");
System.out.println("6 :查看修改结果");
int i=0;
try
i= Integer.parseInt(in.readLine());
catch(IOException e)
System.out.println("抛掷异常");
switch(i)
case 1:
k.sb=jia(h.sb,j.sb);
k.xb=jia(h.xb,j.xb);
System.out.println("计算结果的实部为:"+k.sb);
System.out.println("计算结果的虚部为:"+k.xb);
toString(k);
break ;
case 2:
k.sb=jian(h.sb,j.sb);
k.xb=jian(h.xb,j.xb);
System.out.println("计算结果的实部为:"+k.sb);
System.out.println("计算结果的虚部为:"+k.xb);
toString(k);
break ;
case 3:
System.out.println("请输入您要修改哪个实数:");
int l=0;
try
l= Integer.parseInt(in.readLine());
catch(IOException e)
System.out.println("抛掷异常");
if(l==1)
h.xiugais(h);
h.xiugaix(h);
else
xiugais(j);
xiugaix(j);
break ;
case 4:
double f=0;
double e=0;
f=cheng(h.sb,j.sb)+cheng(h.xb,j.xb);
e=cheng(h.sb,j.xb)+cheng(h.xb,j.sb);
k.sb=(double)(Math.round(f*100)/100.0);
k.xb=(double)(Math.round(e*100)/100.0);
System.out.println("计算结果的实部为:"+k.sb);
System.out.println("计算结果的虚部为:"+k.xb);
toString(k);
break ;
case 5:
double chushu=cheng(j.sb,j.sb)-cheng(j.xb,-j.xb);
double beichushus=jian(cheng(h.sb,j.sb),cheng(h.xb,-j.xb));
double beichushux=jia(cheng(h.sb,-j.xb),cheng(h.xb,j.sb));
k.sb=chu(beichushus,chushu);
k.xb=chu(beichushux,chushu);
System.out.println("计算结果的实部为:"+k.sb);
System.out.println("计算结果的虚部为:"+k.xb);
toString(k);
break ;
case 6:
System.out.println("修改后的结果为:");
System.out.println("第一个复数:"+toString(h));
System.out.println("第二个复数:"+toString(j));
break ;
System.out.println("请问您是否还要继续 y/n:");
try
z=(char)System.in.read();
System.in.skip(2); //忽略回车换行
catch(IOException e)
while(z==\'y\');
public static double gets(Book a)
return a.sb;
public static double getx(Book b)
return b.xb;
public static double xiugais(Book a)
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入您要修改的实部:");
double m=0;
try
m= Double.parseDouble(in.readLine());
catch(IOException e)
System.out.println("抛掷异常");
a.sb=m;
System.out.println("修改成功:");
return 0;
public static double xiugaix(Book b)
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入您要修改的虚部:");
double n=0;
try
n= Double.parseDouble(in.readLine());
catch(IOException e)
System.out.println("抛掷异常");
b.xb=n;
System.out.println("修改成功:");
return 0;
public static double jia(double a,double b)//
double c=0;
c=a+b;
System.out.println("加法成功:");
return c ;
public static double jian(double a,double b)
double c=0;
c=a-b;
System.out.println("减法成功:");
return c;
public static double cheng(double a,double b)
double c=0;
c=a*b;
System.out.println("乘法成功:");
return c;
public static double chu(double a,double b)
double d=0;
double c=0;
d=a/b;
c=(double)(Math.round(d*100)/100.0);
System.out.println("除法成功:");
return c ;
public static double toString(Book a)
System.out.println("结果为:"+a.sb+"+"+a.xb+"*i");
return 0;
(3)测试结果截图:
参考技术A 不知道是不是 ~//复数类。
public class Complex
private double real,im; //实部,虚部
public Complex(double real, double im) //构造方法
this.real = real;
this.im = im;
public Complex(double real) //构造方法重载
this(real,0);
public Complex()
this(0,0);
public Complex(Complex c) //拷贝构造方法
this(c.real,c.im);
public boolean equals(Complex c) //比较两个对象是否相等
return this.real==c.real && this.im==c.im;
public String toString()
return "("+this.real+"+"+this.im+"i)";
public void add(Complex c) //两个对象相加
//改变当前对象,没有返回新对象
this.real += c.real;
this.im += c.im;
public Complex plus(Complex c) //两个对象相加,与add()方法参数一样不能重载
//返回新创建对象,没有改变当前对象
return new Complex(this.real+c.real, this.im+c.im);
public void subtract(Complex c) //两个对象相减
//改变当前对象,没有返回新对象
this.real -= c.real;
this.im -= c.im;
public Complex minus(Complex c) //两个对象相减,与subtract()方法参数一样不能重载
//返回新创建的对象,没有改变当前对象
return new Complex(this.real-c.real, this.im-c.im);
class Complex__ex
public static void main(String args[])
Complex a = new Complex(1,2);
Complex b = new Complex(3,5);
Complex c = a.plus(b); //返回新创建对象
System.out.println(a+" + "+b+" = "+c);
/*
程序运行结果如下:
(1.0+2.0i) + (3.0+5.0i) = (40.0+7.0i)
*/
以上是关于java 中实现复数的加减的主要内容,如果未能解决你的问题,请参考以下文章
用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算