| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1719 人关注过本帖
标题:[求助]两个复数相減居然会出错,郁闷~
只看楼主 加入收藏
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
结帖率:100%
收藏
 问题点数:0 回复次数:12 
[求助]两个复数相減居然会出错,郁闷~
我的源程序如下:
public class fushu1
{
int real;
int imag;

void set(int real,int imag)
{
this.real=real;
this.imag=imag;
}

void print()
{
System.out.println(real+"+"+imag+"i");
}

void add(fushu1 a1,fushu1 a2)
{
a1.real=a1.real+a2.real;
a1.imag=a1.imag+a2.imag;
System.out.println(a1.real+"+"+a1.imag+"i");
// return a1;
}

void minus(fushu1 a1,fushu1 a2)
{
a1.real=a1.real-a2.real;//System.out.println(a2.real);
a1.imag=a1.imag-a2.imag;
System.out.println(a1.real+"+"+a1.imag+"i");
// return a1;
}

public boolean compore(fushu1 a1,fushu1 a2)
{
if (a1.real>a2.real)
return true;
else
return false;
/*if (a1.real>a2.real)
return true;
//System.out.println(a1+">"+a2);

else if(a1.real<a2.real)
return false;
//System.out.println(a1+"<"+a2);

else if(a1.real=a2.real)
{
if(a1.imag>a2.imag)
//System.out.println(a1+">"+a2);
else if(a1.imag<a2.imag)
System.out.println(a1+"<"+a2);
else
System.out.println(a1+"<"+a2); }
return ;*/
}

public static void main(String args[])
{
fushu1 f=new fushu1();
fushu1 f1=new fushu1();
fushu1 f2=new fushu1();
f.set(4,7);
f.print();
f1.set(2,9);
f1.print();
f2.add(f,f1);
//f2.print();
f2.minus(f,f1);
//f2.print();
f2.compore(f,f1);
System.out.println("f.real,f1.real "+f2.compore(f,f1));
//f.print();
}

}
红色部分得不出我要的结果~各位大虾看看喔
搜索更多相关主题的帖子: 复数 
2007-11-15 22:33
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
收藏
得分:0 
问题不是出在minus里,而是在add中:
void add(fushu1 a1,fushu1 a2)
{
a1.real=a1.real+a2.real;
a1.imag=a1.imag+a2.imag;
System.out.println(a1.real+"+"+a1.imag+"i");
// return a1;
}
这里a1就已经加上了a2;
所以在minus中减去a2,就会是原来的a1的值;

头可断,发型不可乱;血可流,皮鞋不可不擦油;
2007-11-15 22:56
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
喔~~~~
不过我想问一下,这是两个不同的函数,相互之间应该没有制约呀,怎么add()就会影响minus()的值呢?
请各位在指点一下。

~~我的明天我知道~~
2007-11-16 10:30
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 

因为操控的都是相同的变量。。。

2007-11-16 10:40
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

f2.add(f,f1)之后,f2=6+16i
然后你f2.minus(f,f1),那f2又重新减回去了啊,两个方法之间没影响,只是你调用得不对

I'm here, as always...
2007-11-16 10:40
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
假设我不调用类的对象,而是调用类的公用成员数据。
比如我有两个复数a+bi,a1+b1i;
然后我调用相加的函数,用这个add(int a,int b,int a1,int b1)
然后在调用minus(int a,int b,int a1,int b1)就应该不会出现上面的问题了吧?

~~我的明天我知道~~
2007-11-16 10:47
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

对的,因为你本来的程序是将实数和虚数作为对象的属性,所以方法会改变对象本身的值,但是你用基本类型作为方法的参数就不会改变对象本身的值了


I'm here, as always...
2007-11-16 10:50
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
如果像我这样的做,好像弄的和c++一样了。可以我用的是java呀,你们有这样觉得吗?好像没什么区别了,我也是说在这一方面。

~~我的明天我知道~~
2007-11-16 11:01
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

c++不精通
LZ想要什么效果啊


I'm here, as always...
2007-11-16 11:10
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
其实我也没想要什么,只是透过这个程序有了一些想法,感觉它和c++有点像了。我不知道,当我再次编写某个程序的时候,我那个程序是用java写的,还是用c++写的,还是两者都有?

~~我的明天我知道~~
2007-11-16 11:15
快速回复:[求助]两个复数相減居然会出错,郁闷~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018638 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved