当前位置: 代码迷 >> Java相关 >> java中如何实现具有交换两个整数值功能的函数
  详细解决方案

java中如何实现具有交换两个整数值功能的函数

热度:87   发布时间:2007-10-10 10:37:23.0
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  整数  函数  功能  

----------------解决方案--------------------------------------------------------
java里面无法通过方法来达到交换实际参数的值的,你的方法里面交换的只是形式参数,而真正实际参数的值是无法交换的。而且不管参数是基本类型还是引用类型,java都不能通过方法来做到这点
----------------解决方案--------------------------------------------------------
在java中,一个方法无法改变基本数据类型参数的值,也无法使一个对象引用指向另一个对象
----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

可以将你要交换的参数作为对象的一个变量来交换,例如:
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;
}
}
这样的话就能够达到交换的目的了


----------------解决方案--------------------------------------------------------
谢谢斑竹   我也学会了
----------------解决方案--------------------------------------------------------
因为JAVA中都是传值的,所以实现交换就不能靠类似于C++指针或者引用的东西,虽然JAVA中也有引用,但是这里的引用已经退化了。不是真正意义的引用了。
----------------解决方案--------------------------------------------------------
小问题
我还没注意过
又避免了以后的错误了

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
回复:(hwoarangzk)可以将你要交换的参数作为对象的...
谢谢~~
又学了一点。。
最近看到一个C语言的交换题目,, 忽然想到java中用方法实现两个数的交换~~
没想到被平时一个不起眼的问题难主了。。。
看样子得牢固一下基础
----------------解决方案--------------------------------------------------------
  相关解决方案