交换两个数的值(用JAVA编写)

importjava.io.*;publicclassCompare{publicstaticvoidchange(inta,intb)throwsException{i... import java.io.*;public class Compare
{
public static void change(int a,int b) throws Exception
{
int temp=0;
temp=a;a=b;b=temp;
} public static void main(String args[]) throws Exception
{
int a,b,temp=0; System.out.println("输入a:");
InputStreamReader inreader=new InputStreamReader(System.in);
BufferedReader breader=new BufferedReader(inreader);
a=Integer.parseInt(breader.readLine());

System.out.println("输入b:");
b=Integer.parseInt(breader.readLine()); System.out.println("交换前a="+a+" 交换前b="+b); change(a,b); System.out.println("交换后a="+a+" 交换后b="+b);
}
} 源程序如上所示.编译无错误.但实际运行时a和b的值并没有交换,不知道错在哪里...请求哥哥姐姐们指点我下,谢谢啦 <( ̄︶ ̄)>
展开
 我来答
匿名用户
2013-09-21
展开全部
基本类型无法按引用传递,详见『ヤ;搁[浅灬メ』的解释,我只提供一种实现方案,一定要用函数调用来实现的话,可以传个数组过去

import java.io.*;

public class Compare
{
public static void change(int[] a) throws Exception
{
int temp=0;
temp=a[0];a[0]=a[1];a[1]=temp;
}

public static void main(String args[]) throws Exception
{
int[] a = new int[2];

System.out.println("输入a:");
InputStreamReader inreader=new InputStreamReader(System.in);
BufferedReader breader=new BufferedReader(inreader);
a[0]=Integer.parseInt(breader.readLine());

System.out.println("输入b:");
a[1]=Integer.parseInt(breader.readLine());

System.out.println("交换前a="+a[0]+" 交换前b="+a[1]);

change(a);

System.out.println("交换后a="+a[0]+" 交换后b="+a[1]);
}
}
匿名用户
2013-09-21
展开全部
java默认的都是值传递,你直接用change(int a ,int b)的话,当你的程序去调用这个方法的时候,在方法体内部仅仅只是将你现在的A和B的值赋给了方法体中a和b,就相当于一个变量的FB,他仅仅只是在方法体内部互换了值,其本身并没有换掉,你可以看下java的值传递和引用传递,你就可以明白为什么了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-21
展开全部
你可以这么交换a=a+bb=a-ba=a-b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-21
展开全部
吧change()方法中的那个“int temp=0;”删掉试试~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式