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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© \(^o^)/ 中级黑马   /  2014-5-21 23:09  /  1119 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 \(^o^)/ 于 2014-5-22 20:58 编辑
  1. class Demo
  2. {
  3. public static void main(String[] args)
  4. {
  5. int a = 10;
  6. int b = 20;
  7. System.out.println("a1:"+a+",b1:"+b);
  8. change(a,b);
  9. System.out.println("a2:"+a+",b2:"+b);
  10. }

  11. public static void change(int a,int b)
  12. {
  13. System.out.println("a3:"+a+",b3:"+b);
  14. a = b;
  15. b = a + b;
  16. System.out.println("a4:"+a+",b4:"+b);
  17. }
  18. }



复制代码
为什么a2和b2的值没有变化?

5 个回复

倒序浏览
java不是很懂,在c语言中,将两个数拿到下面的函数去参加运算,下面的函数并没有返回值到之前的函数,所以上面的值是不会变化的,希望您尽早得到java大神的帮忙
回复 使用道具 举报
看样子你是想写一个不用第三方变交换a,b 值的程序吧!,还是说你本来就是要算b+b呢??如果是前者,那你的算法就有问题,如果你的问题只是说为什么打印中a2,b2的值没有变的话,问题就再于你没有分清形参得实参,,你在函数change();中运算了a,b;但这两个变量只是形参,所在的区域是不一样的,你在main()中定义的a,b只能在main中使用,所以你在change中改变的a,b变量是不有义意的,如果非要使得它有意义,你可以把主函数中的a,b定义到主涵数面,使其成为成员变量,但这样一来,你个change中的参数变量名也得改,,不改也行,可以在前面加上
this,这样一来,调用的变量就是成员变量!!而且change()涵数中的参数列表都可以不用写了!!
class Demo
{               
        static int a = 10;
        static int b = 20;
        public static void main(String[] args)
        {

                System.out.println("a1:"+a+",b1:"+b);
                change();
                System.out.println("a2:"+a+",b2:"+b);
        }                 

        public static void change()
        {
                System.out.println("a3:"+a+",b3:"+b);
                a = b;
                b = a + b;
                System.out.println("a4:"+a+",b4:"+b);
        }
}
这样就可以改变,但是。。。。这好改变好像没什么意义!!不知道你的题是什么,要求是什么,,只是解决你这个a2,b2值没变的问题!,,这样算是合格了吧??

评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
哥们是Java预热班512期的学生吧,哪组的?这代码太。。。。。
回复 使用道具 举报
话说今天不是放假么,你没去自习么?
回复 使用道具 举报
love~陌 发表于 2014-5-22 16:28
哥们是Java预热班512期的学生吧,哪组的?这代码太。。。。。

:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马