CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

各位大虾,java中怎样将两个整数交换啊?

楼主Idideads()2006-10-12 22:15:08 在 Java / J2SE / 基础类 提问

在C++中我们可以这样交换两个数:  
  void   Exchange(int   &a,   int   &b)  
  {  
        int   temp   =   a;  
        a   =   b;  
        b   =   temp;  
  }  
  但在Java中似乎不能用“&”来实现引用,那我该怎么办啊? 问题点数:20、回复次数:31Top

1 楼qjjabc()回复于 2006-10-12 22:31:13 得分 0

int   a,b;  
  int   temp=a;  
  a=b;  
  b=temp;  
  这样a,b两个的值就互换了  
  Top

2 楼kinsey0514(春天的老黄牛)回复于 2006-10-12 22:34:33 得分 0

markTop

3 楼xfei365(北一止水)回复于 2006-10-12 22:46:46 得分 0

change(int   a,int   b)  
  {  
  a+=b;  
  b=a-b;  
  a-=b;  
   
  }Top

4 楼wireless0300()回复于 2006-10-12 22:49:56 得分 0

public   void   Exchange(int   a,   int   b)//java形式参数是不许要引用的  
  {  
        int   temp   =   a;  
        a   =   b;  
        b   =   temp;  
  }  
   
  大体上和c++一样的  
  Top

5 楼sucfre()回复于 2006-10-12 22:55:15 得分 0

两个整数的交换没有必要写个函数,以一楼的那样写就可以了,JAVA确实没有C++的&Top

6 楼xstom19(hh)回复于 2006-10-12 23:56:13 得分 0

xfei365()   的挺有意思的,下面这样也可以:  
  int   a,b;  
  a   ^=b;  
  b   ^=a;  
  a   ^=b;Top

7 楼Idideads()回复于 2006-10-13 01:02:44 得分 0

多谢各位,虽然简单的三条语句是可以交换两个值,但由于某种特殊用途要写成函数呢?我想要两个值交换后都能返回,比如a=44,b=55,在java中运行完Exchange()函数后,要a=55,b=44。希望各位再赐教。Top

8 楼kg21tm1()回复于 2006-10-13 01:44:34 得分 0

先在函数外部定义a和b可以吗?Top

9 楼kg21tm1()回复于 2006-10-13 01:48:28 得分 0

int   a,b;  
   
  void   Exchange()  
  {  
        int   temp   =   a;  
        a   =   b;  
        b   =   temp;  
  }  
  Top

10 楼Idideads()回复于 2006-10-13 01:59:36 得分 0

a、b最好以参数形式传进Exchange()当中啦.........Top

11 楼omgsunny(家人健康)回复于 2006-10-13 08:48:41 得分 0

java   方法   参数不传址Top

12 楼shengli_liao(我是谁?)回复于 2006-10-13 08:56:23 得分 0

构造对象,将a,b作为对象的属性,然后操作对象,最后获得对应的属性。Top

13 楼agui(阿贵: 高级图形用户界面)回复于 2006-10-13 09:37:10 得分 0

不可能!楼主死了这条心吧。  
   
  --  
  http://www.agui.googlepages.com  
  mailto:   agui.cn(a)gmail.comTop

14 楼jihanzhong(逍遥)回复于 2006-10-13 09:41:13 得分 0

楼主用Integer就可以了Top

15 楼xun56789(狠狠右道【坚决不走旁门左道】)回复于 2006-10-13 09:42:27 得分 0

做个数组,傻吗  
  int   a   =   1,   b   =   2;  
  int   i[]   =     new   int[2];  
  i[0]=a;  
  i[1]=b;Top

16 楼maquan('ma:kju)回复于 2006-10-13 09:48:09 得分 0

>   楼主用Integer就可以了  
   
  逍遥兄误导了,Integer   是   immutable   的,一样不行。  
   
  如果一定要通过一个   method   来实现,下面的形式也许可以:  
   
  void   swap(int[]   a)   {  
          if   (a   ==   null   ||   a.length   !=   2)  
                  throw   new   IllegalArgumentException();  
          int   temp   =   a[0];  
          a[0]   =   a[1];  
          a[1]   =   temp;  
  }  
   
  不过,这样的话,调用的时候,可能需要用不止   3   条语句了     8-)Top

17 楼Idideads()回复于 2006-10-13 12:20:56 得分 0

用Integer不行啊  
   
  Integer   io   =   new   Integer();  
  int   i   =   123;  
  io   =   i;  
   
  会有错啊........Top

18 楼moodkingdom(马甲)回复于 2006-10-13 14:06:18 得分 0

change(int   a,int   b)  
  {  
  a+=b;  
  b=a-b;  
  a-=b;  
   
  }  
  ------------  
  最高境界.哈哈.Top

19 楼whycloud(云木)回复于 2006-10-13 14:29:20 得分 0

楼主用Integer就可以了  
  正解~@~  
  因为这里是指针传递Top

20 楼buyaowen(失业中,请勿打扰)回复于 2006-10-13 14:43:19 得分 0

mark  
  学习Top

21 楼Areslp(努力ING)回复于 2006-10-13 14:49:54 得分 0

Integer对象是不可变的吧,你怎么换?Top

22 楼whycloud(云木)回复于 2006-10-13 15:42:44 得分 0

Areslp(努力ING)   (   )   信誉:100         Blog     2006-10-13   14:49:00     得分:   0      
     
     
        Integer对象是不可变的吧,你怎么换?  
       
  -----------------------------------    
  JDK5.0支持自动拆箱和自动装箱Top

23 楼Areslp(努力ING)回复于 2006-10-13 16:04:35 得分 0

ls的能给个说明的链接吗,谢谢:)Top

24 楼ly342540479(心不在跳了, 脸也不红了)回复于 2006-10-13 16:09:40 得分 0

头脑要变通Top

25 楼issgates(一直很安静)回复于 2006-10-13 16:32:36 得分 0

定义类的全局变量Top

26 楼xxq2554()回复于 2006-10-13 16:42:20 得分 0

int   a   =   1,b   =   2;  
  change(a,b);  
   
    public   void   change(int   a,int   b)  
    {  
          this.a   =   b;  
          this.b   =   a;  
    }Top

27 楼agui(阿贵: 高级图形用户界面)回复于 2006-10-13 16:42:39 得分 0

Integer也不行,  
  1、Integer本身是值对象(value   object),不能修改它的内容(找找哪个方法能修改它的内容?)。实际上,串对象String都不能改变;  
  2、就算Integer本身可以修改,自动装箱、拆箱也不灵:  
  void   exchange(   Integer   ao,   Integer   bo   )   {   交换ao和bo中的实际数据   }  
  int   a,   b;  
   
  exchange(   a,   b   );   //   自动装箱机制生成了两个临时对象,不过调用返回时不能传回a和b。  
  最多只能这样:  
  Integer   ao=a;  
  Integer   bo=b;  
  exchange(   ao,   bo   );  
  a   =   ao;  
  b   =   bo;  
  还是很麻烦。  
   
  --  
  http://www.agui.googlepages.com  
  mailto:   agui.cn(a)gmail.comTop

28 楼chaircat(chaircat)回复于 2006-10-13 19:01:58 得分 0

a   +=   b;  
  b   =   a-b;  
  a   -=   b;  
   
  不用临时变量...Top

29 楼Areslp(努力ING)回复于 2006-10-13 19:52:36 得分 0

呵呵,看了下自动拆箱和自动装箱,无奈小弟愚钝,还是没能想出用Integer怎么能实现,还望高人指点一下,最好写个东西看看:)Top

30 楼Idideads()回复于 2006-10-13 22:00:59 得分 0

在《学习java的日子里》有这样一说:  
   
  在java   5.0以后,仿照.net,java开始支持自动装箱,也就是在任何情况下,一个简单对象和于它对应的复杂对象之间,可以进行自动转换,比如:  
                      Integer   io   =   new   Integer();  
                      int   i   =   123;  
                      io   =   i;  
  这种转换方式轻松的将一个简单对象(i)放置到了堆上(io)。  
   
  但我试时会出错,不是说会自动装箱吗?还是不了解........Top

31 楼agui(阿贵: 高级图形用户界面)回复于 2006-10-13 22:54:34 得分 0

楼主下次把错误信息带出来,高手们就不用去试了。  
  Integer   io   =   new   Integer()   这句有问题,Integer没有这个构造函数。  
  你必须放入一个参数:   Integer   io   =   new   Integer(0)。  
   
  --  
  http://www.agui.googlepages.com  
  mailto:   agui.cn(a)gmail.comTop

相关问题

关键词

得分解答快速导航

  • 帖主:Idideads

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo