//TestComplexNumber.java Copyright Lu Xiangyun(C) 2003
//5-12 根据要求编程实现复数类ComplexNumberimport java.io.*;public class TestComplexNumber
{
public static void main(String args[])
{
ComplexNumber a=new ComplexNumber();
System.out.println("用无参数的构造方法得到的复数为:"+a.toString());
ComplexNumber b=new ComplexNumber(6.0,6.0);
System.out.println("用有参数的构造方法得到的复数x为:"+ b.toString());
ComplexNumber c=new ComplexNumber(9.0,9.0);
System.out.println("用有参数的构造方法得到的复数y为:"+ c.toString());
b.complexAdd(c);
System.out.println("测试复数x与y的和为: "+ b.toString());
ComplexNumber b1=new ComplexNumber(6.0,6.0);
b1.complexAdd(6.0);
System.out.println("测试实数6.0与复数x的和为: "+ b1.toString());
ComplexNumber b2=new ComplexNumber(6.0,6.0);
b2.complexMinus(c);
System.out.println("测试复数x与y的差为: "+b2.toString());
ComplexNumber b3=new ComplexNumber(6.0,6.0);
b3.complexMinus(6.0);
System.out.println("测试实数6.0与复数x的差为: "+b3.toString());
ComplexNumber b4=new ComplexNumber(6.0,6.0);
b4.complexMulti(c);
System.out.println("测试复数x与y的积为: "+b4.toString());
ComplexNumber b5=new ComplexNumber(6.0,6.0);
b5.complexMulti(6.0);
System.out.println("测试实数6.0与复数的积为: "+b5.toString()); }
}
class ComplexNumber
{
double m_dRealPart; //实部
double m_dImaginPart; //虚部
ComplexNumber() //无参数的构造函数,将实部和虚部都置零
{
m_dRealPart=0.0;
m_dImaginPart=0.0;
} ComplexNumber(double r,double i) //有参数的构造函数,将实部的值初始化为r,虚部的值初始化为i
{
m_dRealPart=r;
m_dImaginPart=i;
}
double getRealPart() //获得复数对象的实部
{
return m_dRealPart;
}
double getImaginaryPart() //获得复数对象的虚部
{
return m_dImaginPart;
}
double setRealPart(double d) //把当前复数对象的实部设置为给定的形参的数字
{
m_dRealPart=d;
return m_dRealPart;
}
double setImaginaryPart(double i) //把当前复数对象的虚部设置为给定的形参的数字
{
m_dImaginPart=i;
return m_dImaginPart;
}
ComplexNumber complexAdd(ComplexNumber c) //当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart+c.getRealPart();
m_dImaginPart=m_dImaginPart+c.getImaginaryPart();
return this;
}
ComplexNumber complexAdd(double c) //当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart+c;
m_dImaginPart=m_dImaginPart;
return this;
}
ComplexNumber complexMinus(ComplexNumber c) //当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart-c.getRealPart();
m_dImaginPart=m_dImaginPart-c.getImaginaryPart();
return this;
}
ComplexNumber complexMinus(double c) //当前复数对象与形参实数对象相减,所得的结果仍是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart-c;
m_dImaginPart=m_dImaginPart;
return this;
}
ComplexNumber complexMulti(ComplexNumber c) //当前复数对象与形参复数对象相乘,所得的结果也是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart*c.getRealPart()-m_dImaginPart*c.getImaginaryPart();
m_dImaginPart=m_dImaginPart*c.getRealPart()+m_dRealPart*c.getImaginaryPart();
return this;
}
ComplexNumber complexMulti(double c) //当前复数对象与形参实数对象相乘,所得的结果仍是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart*c;
m_dImaginPart=m_dImaginPart*c;
return this;
}
public String toString() //把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中a和b分别为实部和虚部的数据
{
if(m_dImaginPart > 0)
return(getRealPart()+" + "+getImaginaryPart() + "i");
else
if(m_dImaginPart < 0)
return(getRealPart() + "-" + Math.abs(getImaginaryPart()) + "i");
else
return("" + getRealPart());
}
}
//5-12 根据要求编程实现复数类ComplexNumberimport java.io.*;public class TestComplexNumber
{
public static void main(String args[])
{
ComplexNumber a=new ComplexNumber();
System.out.println("用无参数的构造方法得到的复数为:"+a.toString());
ComplexNumber b=new ComplexNumber(6.0,6.0);
System.out.println("用有参数的构造方法得到的复数x为:"+ b.toString());
ComplexNumber c=new ComplexNumber(9.0,9.0);
System.out.println("用有参数的构造方法得到的复数y为:"+ c.toString());
b.complexAdd(c);
System.out.println("测试复数x与y的和为: "+ b.toString());
ComplexNumber b1=new ComplexNumber(6.0,6.0);
b1.complexAdd(6.0);
System.out.println("测试实数6.0与复数x的和为: "+ b1.toString());
ComplexNumber b2=new ComplexNumber(6.0,6.0);
b2.complexMinus(c);
System.out.println("测试复数x与y的差为: "+b2.toString());
ComplexNumber b3=new ComplexNumber(6.0,6.0);
b3.complexMinus(6.0);
System.out.println("测试实数6.0与复数x的差为: "+b3.toString());
ComplexNumber b4=new ComplexNumber(6.0,6.0);
b4.complexMulti(c);
System.out.println("测试复数x与y的积为: "+b4.toString());
ComplexNumber b5=new ComplexNumber(6.0,6.0);
b5.complexMulti(6.0);
System.out.println("测试实数6.0与复数的积为: "+b5.toString()); }
}
class ComplexNumber
{
double m_dRealPart; //实部
double m_dImaginPart; //虚部
ComplexNumber() //无参数的构造函数,将实部和虚部都置零
{
m_dRealPart=0.0;
m_dImaginPart=0.0;
} ComplexNumber(double r,double i) //有参数的构造函数,将实部的值初始化为r,虚部的值初始化为i
{
m_dRealPart=r;
m_dImaginPart=i;
}
double getRealPart() //获得复数对象的实部
{
return m_dRealPart;
}
double getImaginaryPart() //获得复数对象的虚部
{
return m_dImaginPart;
}
double setRealPart(double d) //把当前复数对象的实部设置为给定的形参的数字
{
m_dRealPart=d;
return m_dRealPart;
}
double setImaginaryPart(double i) //把当前复数对象的虚部设置为给定的形参的数字
{
m_dImaginPart=i;
return m_dImaginPart;
}
ComplexNumber complexAdd(ComplexNumber c) //当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart+c.getRealPart();
m_dImaginPart=m_dImaginPart+c.getImaginaryPart();
return this;
}
ComplexNumber complexAdd(double c) //当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart+c;
m_dImaginPart=m_dImaginPart;
return this;
}
ComplexNumber complexMinus(ComplexNumber c) //当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart-c.getRealPart();
m_dImaginPart=m_dImaginPart-c.getImaginaryPart();
return this;
}
ComplexNumber complexMinus(double c) //当前复数对象与形参实数对象相减,所得的结果仍是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart-c;
m_dImaginPart=m_dImaginPart;
return this;
}
ComplexNumber complexMulti(ComplexNumber c) //当前复数对象与形参复数对象相乘,所得的结果也是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart*c.getRealPart()-m_dImaginPart*c.getImaginaryPart();
m_dImaginPart=m_dImaginPart*c.getRealPart()+m_dRealPart*c.getImaginaryPart();
return this;
}
ComplexNumber complexMulti(double c) //当前复数对象与形参实数对象相乘,所得的结果仍是复数值,返回给此方法的调用者
{
m_dRealPart=m_dRealPart*c;
m_dImaginPart=m_dImaginPart*c;
return this;
}
public String toString() //把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中a和b分别为实部和虚部的数据
{
if(m_dImaginPart > 0)
return(getRealPart()+" + "+getImaginaryPart() + "i");
else
if(m_dImaginPart < 0)
return(getRealPart() + "-" + Math.abs(getImaginaryPart()) + "i");
else
return("" + getRealPart());
}
}
概念上就有问题,复数加减复数后还是复数,为什么要返回出String的对象.
而且,复数相加减应该是这样的格式:c3=c1.add(c2);怎么会出现c3.add(c1,c2);
还是理顺概念再写这个类吧.可能可以写下面的这样:
public final class Complex {
public Complex(double rp, double ip) {...}
public Complex add(Complex c) {...}
public Complex minus(Complex c) {...}
}
如果一定要add(c1,c2)这样的格式,那么也应该是静态方法(工具方法)
public final class Complex {
public static Complex add(Complex c1, Complex c2) {....}
}