| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7769 人关注过本帖
标题:java中如何实现具有交换两个整数值功能的函数
只看楼主 加入收藏
witchery
Rank: 1
来 自:西安
等 级:新手上路
帖 子:205
专家分:0
注 册:2005-8-6
收藏
 问题点数:0 回复次数:15 
java中如何实现具有交换两个整数值功能的函数
下面代码无法实现交换
public class SwapFuncation {

/**
* 使用int做型参
*/
public void swapInt(int x, int y) {

int temp;
temp = x;
x = y;
y = temp;
}

public static void main(String[] args) {

int x = 1, y = 5;
SwapFuncation s = new SwapFuncation();

System.out.println ("交换前");
System.out.println (x);
System.out.println (y);

s.swapInt(x, y);
System.out.println ("交换后");
System.out.println (x);
System.out.println (y);
}

}
搜索更多相关主题的帖子: java 整数 函数 功能 
2007-10-10 10:37
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
java里面无法通过方法来达到交换实际参数的值的,你的方法里面交换的只是形式参数,而真正实际参数的值是无法交换的。而且不管参数是基本类型还是引用类型,java都不能通过方法来做到这点

I'm here, as always...
2007-10-10 10:45
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
在java中,一个方法无法改变基本数据类型参数的值,也无法使一个对象引用指向另一个对象

I'm here, as always...
2007-10-10 10:52
zwfc
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2005-10-17
收藏
得分:0 

那如果想交换应该怎么做呢?


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

可以将你要交换的参数作为对象的一个变量来交换,例如:
class ABC{
int abc;
}

public class ChangeObject {
public static void main(String args[]){
ABC a1=new ABC();
ABC a2=new ABC();
a1.abc=111;
a2.abc=222;
System.out.println("a.abc:"+a1.abc+" b.abc:"+a2.abc);
change(a1,a2);
System.out.println("a.abc:"+a1.abc+" b.abc:"+a2.abc);
}
public static void change(ABC a,ABC b){
ABC temp=new ABC();
temp.abc=a.abc;
a.abc=b.abc;
b.abc=temp.abc;
}
}
这样的话就能够达到交换的目的了


I'm here, as always...
2007-10-10 12:46
xiaodao11o
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-10-5
收藏
得分:0 
谢谢斑竹   我也学会了

2007-10-10 13:48
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 
因为JAVA中都是传值的,所以实现交换就不能靠类似于C++指针或者引用的东西,虽然JAVA中也有引用,但是这里的引用已经退化了。不是真正意义的引用了。
2007-10-10 18:58
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
小问题
我还没注意过
又避免了以后的错误了

骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-10-10 20:24
b13690976754
Rank: 1
等 级:新手上路
威 望:2
帖 子:835
专家分:7
注 册:2006-11-9
收藏
得分:0 

你的 xy和上面的xy同名而已,就算你把值传进去做交换也不互不影响,你程序里面输出的是x = 1, y = 5,压根没变。5楼的程序就是2数交换的。


If Dir(\"alive\") <> \"\" And Dir(\"ideal\") <> \" Then Print \"strive\" End If
2007-10-10 21:06
witchery
Rank: 1
来 自:西安
等 级:新手上路
帖 子:205
专家分:0
注 册:2005-8-6
收藏
得分:0 
回复:(hwoarangzk)可以将你要交换的参数作为对象的...
谢谢~~
又学了一点。。
最近看到一个C语言的交换题目,, 忽然想到java中用方法实现两个数的交换~~
没想到被平时一个不起眼的问题难主了。。。
看样子得牢固一下基础
2007-10-11 17:13
快速回复:java中如何实现具有交换两个整数值功能的函数
数据加载中...
 
   



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

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