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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张龙欢 中级黑马   /  2013-5-16 21:32  /  2253 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张龙欢 于 2013-5-18 16:48 编辑

今天看到一个面试题:定义两个变量,如何用一行代码来实现,交换两个变量的值!

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

10 个回复

倒序浏览
楼主是指用一条语句交换两个变量的值   还是用一行代码定义两个变量,然后再交换两个变量的值?
回复 使用道具 举报
额 你好问题同上
回复 使用道具 举报
定义变量a 和b 然后
a=a - ( b = ( a = a + b ) - b);

其实就是将两行代码合并成一行。
回复 使用道具 举报
一行代码实现交换,估计只能用java提供的工具吧
回复 使用道具 举报
本帖最后由 曾大鹏 于 2013-5-16 21:52 编辑

应该是不用第三个变量 来交换两个变量的值
  1. //定义两个变量a,b分别赋值10,5
  2.             int a = 10;
  3.             int b = 5;

  4.             a = a + b;//a=a+初始的b;
  5.             b = a - b;//这时候b=a-初始的b=a+b-b=a;即改变后的b=初始的a;
  6.             a = a - b;
  7.             /*这时候a=a-b=a+初始的b-改变后的b     
  8.             =a+b-初始的a=b;*/

  9.             Console.WriteLine("{0},{1}",a,b);
  10.             Console.ReadKey();
  11.             //一行可以这样写,其实就是把上面的合在一起而已
  12.             a = a - (b = (a = a + b) - b);
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
呵貌似这样可以哦
  1. int a =1;
  2. int b=2;
  3. a=b+(b=a)*0;
复制代码
回复 使用道具 举报
袁梦希 发表于 2013-5-16 21:38
楼主是指用一条语句交换两个变量的值   还是用一行代码定义两个变量,然后再交换两个变量的值? ...

是一条语句交换两个变量的值
回复 使用道具 举报
int a=10;
int b=20;
b=a+(a=b)-b;
回复 使用道具 举报
曾大鹏 发表于 2013-5-16 21:46
应该是不用第三个变量 来交换两个变量的值

这样可以互换A、B??
  1. int A=0,B=10;
  2.      A = A - (B = (A = A + B) - B);
  3.      System.out.println(A);
  4.      System.out.println(B);
复制代码
回复 使用道具 举报
什么类型变量{:soso_e151:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马