交换两个数没有成功,是不是方法应该要有返回值

-小龙人
全栈领域优质创作者
2016-10-19 11:05:41
import java.util.Scanner;
public class ExchangeNums {
public static void main(String[] args)
{
int a,b;
Scanner sc=new Scanner(System.in);
System.out.println("请输入a的值");
a=sc.nextInt();
System.out.println("请输入b的值");
b=sc.nextInt();
print(a,b);
exchange(a,b);
print(a,b);
}
public static void exchange(int x,int y) //交换方法
{
x=x^y;
y=x^y; //y=x^y^y=x
x=x^y; //x=x^y^x=y
}
public static void print(int x,int y) //输出方法
{
System.out.print(x+","+y+"\n");
}
}
...全文
750 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_31391435 2016-10-29
  • 打赏
  • 举报
回复
是的,要有返回值。Java传递基本数据类型的参数只能使用值传递。这一点和c++很不同,c++可以exchange(int &x,int &y),引用传递,这样可以直接交换a,b,不用返回值。
qq_36427638 2016-10-29
  • 打赏
  • 举报
回复
基本数据类型传值,把print语句放到exchange里面就可以了。 public static void exchange(int x,int y) //交换方法 { print(x,y); x=x^y; y=x^y; x=x^y; print(x,y); }
乐之者v 2016-10-28
  • 打赏
  • 举报
回复
这是个坑。。有点类似于c语言的指针 。。 其实就是“形参”和“实参”。。 你在函数内确实交换了形参的值,但是实参没有改变。
JPF1024 2016-10-28
  • 打赏
  • 举报
回复
参考一楼说的,需要一个临时变量交换。。
z152693 2016-10-21
  • 打赏
  • 举报
回复
你交换成功了,在exchange(int x,int y)方法里添加一个打印语句即可,不用在单独定义方法打印变量
小灰狼 2016-10-21
  • 打赏
  • 举报
回复
exchange 里x, y 是两个副本
Leon_zm 2016-10-21
  • 打赏
  • 举报
回复
Java只有值传递,传值不能传变量!
Mingyueyixi 2016-10-21
  • 打赏
  • 举报
回复
你已经交换成功了。但可惜的是你交换的x和y的值,而不是a与b。你调用交换方法,xy的交换不会引起ab的交换。
paulmarkyes 2016-10-21
  • 打赏
  • 举报
回复
传值不可以传变量
starrkk 2016-10-20
  • 打赏
  • 举报
回复
需要使用引用类型的变量是,“传值“传递的是变量的引用(就是C语言中的地址)而不是变量的所引用的实体。
Lan-Mao 2016-10-20
  • 打赏
  • 举报
回复
java中方法的基本类型的参数传递的是变量值,不能修改原变量,复合类型(比如类,数组等)传递的是地址值,可以修改原变量。
Be_nurturing 2016-10-20
  • 打赏
  • 举报
回复
应该是在exchange缺少个临时变量,将 temp = x, x = y , y = temp。这样就可以了吧,用一个temp临时变量,座桥梁。
肃穆丶 2016-10-20
  • 打赏
  • 举报
回复
Java中只有值传递
unauthorized401 2016-10-20
  • 打赏
  • 举报
回复
Java中只有值传递,exchange(int x,int y) 只是传递过去一个内存拷贝,在exchange中的操作,不会影响实际的值的。但是如果传入的是引用类型的话就会改变。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧