黑马程序员技术交流社区

标题: 如何实现两个整数变量X与Y的交换 [打印本页]

作者: 烟雨江南    时间: 2016-4-11 12:33
标题: 如何实现两个整数变量X与Y的交换
大神们,请问下:如何实现两个整数变量X与Y的交换呢?
作者: psuugdufnm    时间: 2016-4-11 12:50
int x; int y; int z;  z=x; x=y;  y=z;
作者: psuugdufnm    时间: 2016-4-11 12:53
上学的时候,老师讲过,把x 和 y 看作成两杯水, z是空杯子。   把x 的水倒入z; 把y的水倒入x;最后把z中的水倒入y;
作者: 958721894    时间: 2016-4-11 12:54
import org.junit.Test;  /*  * 实现两个整数交换的4种方法  */ public class NumberChange {         //1.采用第三方变量         @Test         public void test1(){                 int i = 10;                 int j = 20;                 System.out.println("i=" + i + ",j=" + j);                                  //数值交换                 int k = i;                 i = j;                 j = k;                 System.out.println("i =" + i + ",j=" + j);                 System.out.println("------------------");         }         @Test         public void test2(){                          //2.异或位运算 ^                 int i = 10;                 int j = 20;                 System.out.println("i=" + i + ",j=" + j);                 i = i ^ j;             j = i ^ j;//j = i ^ j ^ j                 i = i ^ j;//i = i ^ j ^ i                 System.out.println("i=" + i + ",j=" + j);                 System.out.println("------------------");         }         //3.加法         @Test         public void test3(){                 int i = 10;                 int j = 20;                 System.out.println("i=" + i + ",j=" + j);                                  i = i + j;                 j = i - j;                 i = i - j;                 System.out.println("i=" + i + ",j=" + j);                 System.out.println("------------------");         }         //4.一句话搞定         @Test         public void test4(){                 int i = 10;                 int j = 20;                 System.out.println("i=" + i + ",j=" + j);                 j = (i + j) - (i = j);                 System.out.println("i=" + i + ",j=" + j);         } }
作者: strongmanzxh    时间: 2016-4-11 22:18
直接采用位异或的规律进行交换即可
作者: huhemingtiancai    时间: 2016-4-11 22:32
三种思路啊,你这样水贴会被封的
作者: xi502586913    时间: 2016-4-11 23:00
用^就可以了,比如x=x^y;
y=x^y;
x=x^y;
就能做到了
作者: xi502586913    时间: 2016-4-11 23:01
加减法, 第三方变量也可以做到
作者: 不忘初❤    时间: 2016-4-11 23:10
这是不是典型的水贴???
作者: 格城先生    时间: 2016-4-11 23:16
int x,y; int z =x; int x = y; int y =z;
作者: 格城先生    时间: 2016-4-11 23:20
还有一种:  int x,y;   x = x + y; y = x - y;         x = x - y;
作者: 梧桐望穹    时间: 2016-4-11 23:24
定义中间变量吧
作者: fanxiaolin    时间: 2016-4-11 23:26
第三方变量,这种问题看视屏
作者: cohle1992    时间: 2016-4-11 23:31
异或的方法
作者: junjun1314520    时间: 2016-4-12 09:07
定义一个第三方的变量    int c ;        c = a ;       a = b ;     b = c ;   然后在输出试下
作者: 年年    时间: 2016-4-12 13:03
int x,y
x =x+y;
y = x - y
x = x - y
作者: 菊花爆满山    时间: 2016-4-12 16:23
定义一个临时变量temp
作者: Yoyoqiu    时间: 2016-4-12 17:10
面试的话 用异或  
开发的话 用temp




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