我想在main函数中定义两个整形变量,然后将它们作为参数传送到方法中,在方法中交换他们的值。在C中我可以用指针做到这一点(将指针作为参数传入函数,把指针交换),但是在java中不太熟悉。
我已经把程序写好了,在方法中也交换成功了,为什么主函数输出时,还是原来交换前的值呢?
class ChangeValue{
public static void main(String[] args){
int a,b;
a=Integer.parseInt(args[0]); //用命令行来给a,b,赋值
b=Integer.parseInt(args[1]);
change(a,b); //在这儿进入交换函数
System.out.print(a + " "); //这里的输出,总是交换前的值。为什么呢??
System.out.print(b);
}
static void change(Integer a,Integer b){
int i,j;
i=a.intValue(); //这两行是为了比较a,b,的大小
j=b.intValue();
if(i>j){ //交换a,b的值
Integer t=new Integer(0);
t=b;
b=a;
a=t;
System.out.println(a+" "+ b); //用来调试,发现在这里是成功交换的。
}
}
}
程序是不报错的,假如我输入3 1 ,本来应该是输出 1 3 的,但是主函数中的输出却还是3 1 。
change方法中输出的是却 1 3没错。
为什么呢? 当change结束返回到主函数中时,不是应该已经把a,b交换了吗?
程序较长,感谢大家耐心的看我的问题,很困惑,希望给予帮助!
我输入的时候就是一定会输入a 大于b的,我要求程序要是a 小于b 就不用交换。
但是就是满足i>j, 在主函数的输出,也是没有交换的值,虽然在change方法中很明显已经交换了,这是为什么?