public class test
{
     public void trans(int x1,int x2)
     {
       int tmp;
       
       tmp=x1;
       x1=x2;
       x2=tmp;
      }
      public static void main (String args[]) 
      {
        int x1;
        int x2;
        x1=1;
        x2=2;
        test theTest=new test();//加这句??怎么实现转换x1和x2
        theTest.trans(x1,x2);
        System.out.println(x1);
        System.out.println(x2);
      }
}
本人刚学java,请问如何实现X1和X2的交换

解决方案 »

  1.   

    象这种 trans(int x1,int x2)的函数在java里是没有办法交换x1,x2的值的
    一种解决办法是:自己写一个Int类
    public class MyInt
    {
      private int x=0;
      public void setX(int x){this.x=x}
      public int getX(){return x)
    }trans函数改成
    public viod trans(MyInt x1, MyInt x2)
    {
       int t=x1.getX();
       x1.setX(x2.getX());
       x2.setX(t);
    } 不能用Integer类代替int,因为Integer类没有改变自身值的函数.
      

  2.   

    这样只交换了值,没有交换地址,可以用数组做不过麻烦,要不不放方法体内做,或输出语句放trans方法内
      

  3.   

    public class test
    {
    int x1;
    int x2;
        public void trans(int x1,int x2)
        {
          int tmp;
          
          tmp=x1;
          this.x1=x2;
          this.x2=tmp;
         }
         public static void main (String args[]) 
         {
           
           test theTest=new test();//加这句??怎么实现转换x1和x2
           theTest.trans(theTest.x1,theTest.x2);
           System.out.println(theTest.x1);
           System.out.println(theTest.x2);
         }
    }
    1、因为trans方法中的x1,x2是指参数x1,x2,只对该方法可见,也就是说你只是调换这两个参数的值,方法一执行完,
    这两个“参数”就从内存中释放了。
    2、你传的是方法外面的x1、x2,但由于与参数同名,在方法中系统认为x1,x2是参数的x1,x2。
      

  4.   

    public class Change {

    private int x;
    private int y ;

    public Change(){

    }
    public void trans(int x,int y){

    this.x = x + y ;

    this.y = this.x -y;

    this.x = this.x - this.y;
    }

    public int getX(){

    return this.x;
    }

    public int getY(){

    return this.y;
    }
    public static void main(String[] args) {

    Change change = new Change();
    int x=1,y=2;

    change.trans(x, y);
    System.out.println("x="+change.getX()+" y="+change.getY());
    }


    }
      

  5.   

    public class test
    {
        public static void change(int[] num)
    {
    num[0]=num[0]+num[1];
    num[1]=num[0]-num[1];
    num[0]=num[0]-num[1];
    }
          public static void main (String args[]) 
          {
           
            
            int[] num=new int[]{3,4};
            change(num);
            System.out.println("x="+num[0]+","+"y="+num[1]);
            
          }
    }
      

  6.   

    public class test
    {
         public void trans(test t)
         {
           int tmp; 
           tmp=t.x1;
           t.x1=t.x2;
           t.x2=tmp;
          }
          int x1=1;
          int x2=2;
          public static void main (String args[]) 
          { 
            test theTest=new test();//加这句??怎么实现转换x1和x2
            theTest.trans(theTest);
            System.out.println(theTest.x1);
            System.out.println(theTest.x2);
          }
    }
      

  7.   

    class Trans
    {

     public void trans(int x,int y)
         {
           x=x+y;
           y=x-y;
           x=x-y;//不用另外设置中间变量了:)
           System.out.println("交换后的值:x="+x);
           System.out.println("交换后的值:y="+y);//交换后的值
      }}
    public class Test{
          public static void main (String[] args) 
          {
            int x=1,y=3;;

    System.out.println("交换前的值:x="+x+"  y="+y);//交换前的值,
    Trans t=new Trans();
    t.trans(x,y);
            
      }
          
    }
      

  8.   

    setfai(空集) ( ) 信誉:98    Blog  2007-02-11 20:23:55  得分: 0  
     
     
       class Trans
    {

     public void trans(int x,int y)
         {
           x=x+y;  // 1
           y=x-y;  // 2
           x=x-y;//不用另外设置中间变量了:) //3
           System.out.println("交换后的值:x="+x);
           System.out.println("交换后的值:y="+y);//交换后的值
      }}
    =====================================
    这个方法好,但可能会得到overflowing...
    如此这般,将会永保安康!
    x = x^y;
    y = x^y;
    x = x^y;