1.写一个方法,交换两个变量,传入参数为两个int型变量

不可以使用任何其他的类
int a=10;int b=30
要求有一个方法swap(int m,int n)指定传入的只能是两个int参数,而且只能是int型
调用swap后,a==30,而b==10

解决方案 »

  1.   

    public void swap(int m,int n)
    {
        int temp = m;
        m = n;
        n = temp;
    ]
      

  2.   

    没有使用其他类,只用了一个变量int
    只传入两个int类型的变量,没有第三个
    完成了交换功能
      

  3.   

    a=a+b;
    b=a-b;
    a=a-b;
    呵呵
      

  4.   

    public class Application1 {
      //Construct the application
      //Main method
      public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a= " + a + ";  b= " + b);
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.println("a= " + a + ";  b= " + b);
      }
    }
      

  5.   

    看来说不可能的,和不知如何改的,是懂Java的,那我再问要交换两个对象呢,怎么做?
    其实我自己知道没法改,只是最近工作需要,在学C#,学过Java后看C#的人都会感觉C#和Java太相似了,不知不觉中就会拿两者相比较,对于传值和传引用上,C#做的更好,可以交换两个变量,而不使用其他类,用了关键字ref,方法就是void swap(ref int a,ref int b),因此我就一直想Java如何
    用最简单的方法来交换呢,实质也就是传递引用,因为我始终还是热爱和忠于Java的,因此我一直希望Java在这点上不会输于C#
      

  6.   

    嘿嘿,
    a,b为类属性,swap为类方法,且同为static/nonstatic;
      

  7.   

    楼主太缺德了!
    我反而觉得java更简单,C#有点落后呀,还有什么out,ref,比较讨厌
      

  8.   

    To  treeroot(旗鲁特) :怎么叫缺德呢,讨论问题么,对于有价值的回答,当然给分。不过对Java的基本概念都没有搞清的朋友,就不给分了。
      

  9.   


    构造IntHandler对象也许可以满足你的需求
      

  10.   

    这样其实反而可以暴露很多大家并不注意的基础问题,这里的板块叫什么来着?J2SE基础类!!!
    而且这些基础是不容有一点差错的,否则越积越多,对于程序的影响是极大的。
    象刚才第一个给出代码的朋友,很明显是凭自己的想象,根本没有自己亲历亲为的调试过,因此
    他一定还以为自己正确呢,实际上Java并不简单,没有对Java的一些基础的机制的深刻理解,光会用一些API,跟着书本step by step地按部就班,无论如何是不可能掌握Java的。
      

  11.   

    public class A{
     static int p=10;
     static int q=30;
    public static void main(String []args)
    {
    swap(0,0);
    System.out.println("p="+p+",q="+q);
    }
    public static void swap(int a,int b)
    {p=p+q;
    q=p-q;
    p=p-q;}

    -------------------------
    看一下可以吗?
      

  12.   

    楼主何必非要拿Java用同样的方式去实现C#的功能呢?Java中只有按值传送概念,没有按地址传递这个概念。用基本类型当然不能实现交换功能,但借助类的Reference是完全可以实现变量内容交换。Java与C#的实现方式不同而已。
      

  13.   

    让swap(int m,int n)玩真的m、n。
    this.m = n;
      

  14.   

    zw24127(政委)的答案其实根本就没有用到a,b两个参数,所以,不能算正解,比较而言,我认为yqj2065(严千钧) 的答案好。
    当然只要是中肯的回答,都给分。准备结贴
    class test{
       int a;
       int b;
    public void swap(int a,int b){
        this.a=b;
        this.b=a;
    }   
    }
      

  15.   

    老实说,如同vb里面有ByVal,C/C++里有&(取地址符),我不得不说,Java里不能传送地址,既是其优点,也是其遗憾,矛盾的两个方面。
      

  16.   

    严重同意treeroot我反而觉得java更简单,C#有点落后呀,还有什么out,ref,比较讨厌
      

  17.   

    楼上的,建议你看看程序员那本书上对于Java和.NET的比较(C#毫无疑问是.NET的核心语言),在很多项测试中,C#的评价都是高于Java的,特别是在win平台下,Java的优势很明显在Linux/Unix平台,但是你觉得Linux/Unix简单么?,我开始跟你一样,也不喜欢微软和C#,但是这是不对的,没有去深入了解学习它,就不要轻易地说他不好,等你用了,你就会发现它的好了。
      

  18.   

    微软纯粹就喜欢多搞点东西,吸引大家过来,比如毫无生存价值可言的VB.net,我用过C#,也看到过那些毫无价值的out,ref参数的使用,觉得60%的情况下,这些都是程序自己的框架设计的不好,30%属于被没有必要的滥用,只有大约10%的情况,属于用比不用更方便更合适比如下面的程序(真实情况,我们做项目时候看到过的技术demo)
    class A {
      private B b;
      private void xxx() {
        yyy(b);
      }
      private void yyy(ref B argB) //这里由于我从来不用ref,所以先后顺序可能错了
      {
        if (argB == null) 
        {
          argB = new B();
        }
      }
    }
    大家认为有必要ref吗,有必要作为参数吗?
      

  19.   

    微软纯粹就喜欢多搞点东西,吸引大家过来,比如毫无生存价值可言的VB.net,我用过C#,也看到过那些毫无价值的out,ref参数的使用,觉得60%的情况下,这些都是程序自己的框架设计的不好,30%属于被没有必要的滥用,只有大约10%的情况,属于用比不用更方便更合适比如下面的程序(真实情况,我们做项目时候看到过的技术demo)
    class A {
      private B b;
      private void xxx() {
        yyy(b);
      }
      private void yyy(ref B argB) //这里由于我从来不用ref,所以先后顺序可能错了
      {
        if (argB == null) 
        {
          argB = new B();
        }
      }
    }
    大家认为有必要ref吗,有必要作为参数吗?
      

  20.   

    C#是不咋样的,不过要是牵到.net呵呵就会发现.net比java方便,
    至少不用写很多的js,来隐藏传递变量啊,啥的。不过要是真是大型应用,好像没有用.net的。(好像没看到多少拿.net来做服务器集群的)
      

  21.   

    a=a+b;
    b=a-b;
    a=a-b;这个题好像出现过
      

  22.   

    交换2个数有三种方法:int temp; int a=3,b=4;
    1.temp=a;
      a=b;
      b=temp;
    2,a=a+b;
      b=a-b;
      a=a-b;
    3,a^=b;
      b^=a;
      a^=b;
    java方法都是传值的,想用形参和形参交换来实现2个数互换是不可能的。最多也是用包装类通过类的2个域交换实现2个数交换。