A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高志鹏 中级黑马   /  2012-11-29 23:40  /  1934 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 高志鹏 于 2012-11-30 11:46 编辑

自己写的swap交换函数,在运行中,在调用的函数的过程中已经实现了交换,但是在打印的时候却没有。请问这个是什么原因、

QQ截图20121129232737.png (11.19 KB, 下载次数: 28)

QQ截图20121129232737.png

QQ截图20121129233723.png (40.54 KB, 下载次数: 33)

QQ截图20121129233723.png

未命名.jpg (51.1 KB, 下载次数: 27)

未命名.jpg

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

9 个回复

正序浏览
楼主没有搞清楚变量的作用域,你给函数传值进去的只是值,不是变量本身。。。
回复 使用道具 举报
一句话,哥哥,两种方法解决
1)你把最后一个打印语句放在swap方法里。保证正确。
2) 或者你写个方法是有返回类型是int类型的也可以,return a,b;
回复 使用道具 举报
深井看海 发表于 2012-11-30 01:14
看图说故事

3q。。。。。。。。。。。。。
回复 使用道具 举报
胡凤 发表于 2012-11-30 08:28
public static void main(String[] args) {
                // TODO Auto-generated method stub
                int a=0;

你这样不就是myswap(int a,int b){
          System.out.println(b+","+a);
}
楼主是要交换值,楼主你就死心吧,java基本类型只能值传递,不能操作内存(这也是java安全的地方),要是C还能用指针实现。要不你就返回值,很傻的办法。
回复 使用道具 举报
public static void main(String[] args) {
                // TODO Auto-generated method stub
                int a=0;
                int b=1;
                System.out.println(a+","+b);
                myswap(a,b);
               
        }
        public static void myswap(int a,int b)
        {
                int temp=0;
                temp=a;
                a=b;
                b=temp;
                System.out.println(a+","+b);
        }
这样就可以了-。-

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
{:soso_e113:}看图说故事

1.JPG (54.36 KB, 下载次数: 30)

1.JPG

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
程宏志 发表于 2012-11-30 00:12
我写了一个方法给你
public static void main(String[] args)
        {

这种在主函数中直接换的都懂了,但就是单独将交换功能封装到函数中如何实现呢。
回复 使用道具 举报
我写了一个方法给你
public static void main(String[] args)
        {
                int a=1;
                int b=2;
                System.out.println(a+"   "+b);
                   a=a^b;
                   b=a^b;
                   a=a^b;
         System.out.println(a+"   "+b);
        }
如果你非要通过调用的方法来改变a,b的值话,我给你的建议就是,写两个方法,都返回值然后将值分别赋给main中的a,b这样才能改变a和b的值

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主:你这结果不会是你想要的结果:我想问你,你调用了mySwap(a,b)这个方法,那我想问你,你把这个方法调来用之后,怎么实现怎主函数中将a和b的只进行交换呢?还有是使用voi没有返回值,竟然没有返回值,那我想,你怎么是有你MySwap()方法中交换的值。是吧?不要搞混了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马