黑马程序员技术交流社区

标题: 遇到一题目,求解答 [打印本页]

作者: 原满    时间: 2013-4-29 23:55
标题: 遇到一题目,求解答
补全代码 实现输出 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());
    }

作者: 极限冰风    时间: 2013-4-30 00:19
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);
        }

作者: xiaohu1218    时间: 2013-4-30 01:53
由于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);
               
            }
}
作者: 吴凯    时间: 2013-4-30 02:28
各种高手不解释
作者: lipingan0520    时间: 2013-4-30 08:00
实现不了,坐等高手来{:soso_e115:}
作者: 符立波    时间: 2013-4-30 09:41
应该多看看源代码啊......{:soso_e113:}
作者: 刘沛霞    时间: 2013-4-30 09:43
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());
    }

}
作者: 花开花落总相似    时间: 2013-4-30 10:18
   楼上的 你的代码貌似有问题
作者: 黄玉昆    时间: 2013-5-2 20:22
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2