复数相乘的问题。输出不对。

hamiltonpro 2012-10-25 09:23:39
代码如下:其他的输出也会有些错误。难道是return时把a值给改变了?
public class ComplexNumber {
public double realPart ;
public double imaginPart ;
public ComplexNumber()
{}
public ComplexNumber(double r,double i)
{
realPart = r ;
imaginPart = i ;
}
public double getRealPart()
{
return realPart;
}
public double getImaginaryPart()
{
return imaginPart;
}
public double setRealPart(double d)
{
realPart = d ;
return realPart ;
}
public double setImaginaryPart(double d)
{
imaginPart = d;
return imaginPart ;
}
//复数相加
public Object complexAdd(ComplexNumber c)
{
realPart = c.realPart +realPart;
imaginPart = c.imaginPart + imaginPart;
return new ComplexNumber(realPart,imaginPart);
}
//复数相减
public Object complexMinus(ComplexNumber c)
{
realPart = realPart - c.realPart;
imaginPart = imaginPart - c.imaginPart;
return new ComplexNumber(realPart,imaginPart);
}
//复数相乘
public Object complexMulti(ComplexNumber c)
{
realPart = realPart*c.realPart - imaginPart*c.imaginPart;
imaginPart = realPart*c.imaginPart + imaginPart*c.realPart;
return new ComplexNumber(realPart,imaginPart);
}
//复数的大小
public Object complexSize()
{
double a = Math.sqrt(realPart*realPart+imaginPart*imaginPart);
return a;
}
public String toString()
{
String rtr_str = "";
if (imaginPart > 0)
rtr_str = "(" + realPart + "+" + imaginPart + "i" + ")";
if (imaginPart == 0)
rtr_str = "(" + realPart + ")";
if (imaginPart < 0)
rtr_str = "(" + realPart + imaginPart + "i" + ")";
return rtr_str;
}
public static void main(String[] argv)
{
ComplexNumber a = new ComplexNumber(2,5);
ComplexNumber b = new ComplexNumber(3,-4);
System.out.println(a + "+" + b + "=" + a.complexAdd(b) );
System.out.println(a + "-" + b + "=" + a.complexMinus(b));
System.out.println(a + "*" + b + "=" + a.complexMulti(b));
System.out.println(b + "的大小" + "=" + b.complexSize());
}
}
...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
WanGuFengYue 2012-10-26
  • 打赏
  • 举报
回复
没看到toString方法不好意思,
//复数相乘
public Object complexMulti(ComplexNumber c)
{
realPart = realPart*c.realPart - imaginPart*c.imaginPart;
imaginPart = realPart*c.imaginPart + imaginPart*c.realPart;
return new ComplexNumber(realPart,imaginPart);
}
里repart被重新赋值过,所以imaginPart 计算错误,定义个临时变量temp,改写如下
// 复数相乘
public Object complexMulti(ComplexNumber c) {
double temp = realPart;
realPart = realPart * c.realPart - imaginPart * c.imaginPart;
imaginPart = temp * c.imaginPart + imaginPart * c.realPart;
return new ComplexNumber(realPart, imaginPart);
}
WanGuFengYue 2012-10-26
  • 打赏
  • 举报
回复
返回的是一个对象的地址,用a.complexAdd(b).realPart 看看

58,441

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧