交换两个数的值(用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的值并没有交换,不知道错在哪里...请求哥哥姐姐们指点我下,谢谢啦 <( ̄︶ ̄)> 展开
{
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的值并没有交换,不知道错在哪里...请求哥哥姐姐们指点我下,谢谢啦 <( ̄︶ ̄)> 展开
4个回答
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]);
}
}
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;”删掉试试~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |