下面是本人编写的一个求复数的程序(只实现了加法和乘法,其他运算有兴趣的可以自己做)。如果大家对我的方法有意见,或是还有更好的方法可以拿出来讨论一下共同进步。
import java.io.*;
public class ComplexOper
{
public static void main(String args[])
{
ComplexNumber cn=new ComplexNumber(4.0,8.0);
ComplexNumber cy=new ComplexNumber();
double a=Double.parseDouble(args[0]);
double b=Double.parseDouble(args[1]);
cy.setRealPart(a);
cy.setImaginaryPart(b);
String add=cn.complexAdd(cy);
String muti=cn.complexMulti(cy);
System.out.print("两复数相加:"+add+"\n"+"两复数相乘:"+muti);
}
}
class ComplexNumber
{
private double m_dRealPart; //实部
private double m_dImaginPart; //虚部
ComplexNumber()
{
}
ComplexNumber(double r,double i)
{
m_dRealPart=r;
m_dImaginPart=i;
}
public double getRealPart()
{
return m_dRealPart;
}
public double getImaginaryPart()
{
return m_dImaginPart;
}
public double setRealPart(double d)
{
m_dRealPart=d;
return m_dRealPart;
}
public double setImaginaryPart(double d)
{
m_dImaginPart=d;
return m_dImaginPart;
}
//当前复数对象与形参复数对象相加,所得复数值返回给调用者。
public double complexAdd(ComplexNumber c)
{
String s;
double a,b;
a=this.m_dRealPart+c.m_dRealPart;
b=this.m_dImaginPart+c.m_dImaginPart;
if(b<0)
s=""+a+"-"+Math.abs(b)+"i";
else
s=""+a+"+"+b+"i";
return s ;
}
/* //当前复数对象与形参实数对象相加,所得复数俚返回给调用者。
complexAdd(double c)
{
}
//当前复数对象与形参复数对象相减
complexMinus(ComplexNumber c)
{
}
*/
//当前复数对象与形参复数对象相乘
public String complexMulti(ComplexNumber c)
{
String s;
double a,b;
if((this.m_dRealPart==c.m_dRealPart)&&(this.m_dImaginPart==-c.m_dImaginPart))
{ //共轭复数相乘
a=m_dRealPart*m_dRealPart+m_dImaginPart*m_dImaginPart;
s=""+a;
}
else
{ //普通复数相乘
a=this.m_dRealPart*c.m_dRealPart-this.m_dImaginPart*c.m_dImaginPart;
b=this.m_dRealPart*c.m_dImaginPart+this.m_dImaginPart*c.m_dRealPart;
if(b<0)
s=""+a+b+"i";
else
s=""+a+"+"+b+"i";
}
return s;
}
/*
//当前复数对象与形参复数对象相除
complexDiv(ComplexNumber c)
{
}
*/
public String toString()
{
String s=""+m_dRealPart+"+"+m_dImaginPart+"i";
return s;
}
}