【新手求教】 java 想交换两个数的值,用函数该怎么写?

publicstaticvoidmain(String[]args){intx=1;inty=2;swap(x,y);System.out.println(x,"",y)... public static void main(String[] args) {
int x=1;
int y=2;
swap(x,y);
System.out.println(x," ",y)
}
public static void swap(int a,int b)
{
int tmp=a;
a=b;
b=tmp;
}
我是这么写的,但是运算结果是没有交换,xy的值传入swap函数了,形参ab也确实交换了,但是交换后的结果没有传回xy,求大侠指明swap函数应该怎么写..(我知道可以把交换过程写到主函数里...)
自己用返回数组的方案解决了:
public static void main(String[] args) {
int x=1;
int y=2;
int array[]=swap(x, y);
System.out.println(array[0]+" "+array[1]);
}
public static int[] swap(int a,int b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
return new int[]{a,b};
}
展开
 我来答
yuanxijie
推荐于2017-09-28 · TA获得超过2151个赞
知道大有可为答主
回答量:2566
采纳率:50%
帮助的人:1719万
展开全部

这么写就没错误了。


你要是用swap方法,应该多个赋值


把swap的结果,赋值给xy

更多追问追答
追问
= =|||,我就是不想把交换过程写在主函数里啊...我还能不知道...如果后面其他语句也用到交换...重新再写觉得有点麻烦 所以想知道用函数,也就是方法该如何实现..
追答

你这样弄

主函数 建立 两个静态变量。

public static int  TEMPA =0;

public static int TEMPB = 0;

然后写swap函数

public void swap (TEMPA,TEMPB)

函数就跟你写的一样。


每次使用前,把 x y 赋值给静态变量 

TEMPA = X;

TEMPY = Y;

swap之后


取出静态变量的值


x = TEMPA;

Y= TEMPB;

spark_zhx
2015-01-17 · 超过14用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:25.5万
展开全部
哥们。。。你这个改变的是swap函数中的a和b。但是改变不了在主函数里面定义的a和b。
一:你可以把x和y定义成全局变量试试。
二:你如果想要改变的话,也可以在swap函数中return a 和b的值。。。
追问
如果定义成全局变量就没有单独写一个swap函数的必要了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AB简明
2017-11-08
知道答主
回答量:22
采纳率:0%
帮助的人:4.9万
展开全部

用反射

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
武后星痕
2015-10-31 · 超过16用户采纳过TA的回答
知道答主
回答量:62
采纳率:100%
帮助的人:23.2万
展开全部
public class Demo {

public static void main(String[] args) {

int a=1;
int b=3;
jianohuan(a,b);
// System.out.println();
}

public static void jianohuan(int a, int b) {
int x;
x=a;
a=b;
b=x;
System.out.println("a="+a+" "+"b="+b);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式