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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 原满 中级黑马   /  2013-4-29 23:55  /  1686 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

补全代码 实现输出 a=2 b=1
public static void swap(Integer x, Integer y) {
        
    }
public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(2);
        swap(a, b);
        System.out.print("a=" + a.intValue());
        System.out.print("b=" + b.intValue());
    }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
public static void main(String[] args) {
                // TODO Auto-generated method stub

                Integer a = new Integer(1);
            Integer b = new Integer(2);
            swap(a, b);
        }
        public static void swap(Integer x, Integer y) {
                int i=0;
                i=x; //定义个中间变量把x的值赋给i
                x=y;//在把y的值赋给x
                y=i;//在把i的值赋给y实现交替互换
            System.out.println("a="+x);
            System.out.println("b="+y);
        }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
由于java中值传递时,全局变量能被改变而且在函数中改变后也不需要返回值,所以a,b最好定义成全局变量;
Integer类型没有提供set方法,只能获取当前初始化后的值,所以我就自己定义属性的set方法
public class UdpTest {

        /**
         * @param args
         */
        private static Integer a,b;
         public  void setA(Integer a) {
                  this.a = a;
                 }

                public void setB(Integer b) {
                  this.b = b;
                 }
        public static void main(String[] args) {
                // TODO Auto-generated method stub

                   a = new Integer(1);
               b = new Integer(2);
                new UdpTest().swap(a, b);//如果将swap用static修饰,则setA和setB也需要用static修饰
                System.out.println(a.intValue());
                        System.out.println(b.intValue());
            
        }

        public  void swap(Integer x, Integer y) {
             
             setA(y);
             setB(x);
               
            }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
各种高手不解释
回复 使用道具 举报
实现不了,坐等高手来{:soso_e115:}
回复 使用道具 举报
应该多看看源代码啊......{:soso_e113:}
回复 使用道具 举报
java 中只能进行值传递,不能进行引用传值。只有将引用传递过去才能改变值,这如果在c++当中就是很简单了。
public class Test{

private Integer x;
private Integer y;
public Test(Integer x,Integer y){
    this.x=x;
    this.y=y;

public static void swap() {
     private   Integer temp;
      temp = x;
      x=y;
      y=temp;
    }

public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(2);
       Test test = new Test(a,b);

        test.swap();
        System.out.print("a=" + a.intValue());
        System.out.print("b=" + b.intValue());
    }

}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

回复 使用道具 举报
   楼上的 你的代码貌似有问题
回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马