精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-12
zs396963330 写道 qwaz 写道 marcolee 写道 public void swap(int a ,int b){
b = a + b; a = b - a; b = b - a; System.out.println(" a = " + a ); System.out.println(" b = " + b ); } 小心阿,这样有可能会越界 怎么越界? int值 你传递2个很大的参数试试 就知道了撒。不是数组越界 估计想表达的意思是 int不够。 |
|
返回顶楼 | |
发表时间:2011-07-12
假设 a = INT.MAXVALUE
b = INT.MAXVALUE a+b就悲剧了 |
|
返回顶楼 | |
发表时间:2011-07-12
相加就有机会越界。
这多不考虑?? 异或是正解。 |
|
返回顶楼 | |
发表时间:2011-07-12
yizhilong28 写道 bloodstorm 写道 //交换a和b的值 public void swap(int a ,int b){ int temp = a; a = b; b = temp; } 要求:修改此方法,不能定义temp中间变量,实现值得交换 ...没想到怎么搞。。。 这样的公司不去也罢,牺牲可读性的代码维护起来,你懂的 +1 |
|
返回顶楼 | |
发表时间:2011-07-12
这个题本身就有问题,原来那种方式真的能交换a和b???
只要用的还是java语言,不管你方法体里怎么实现,也不可能写得出一个可以工作的swap(int a, int b)的 |
|
返回顶楼 | |
发表时间:2011-07-12
lyw985 写道 jancy 写道 zhangyang6380006 写道 我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;
如果2个变量都是数字,这样可以 字符串的话,就不行了。 这样比较通用: b ^= a ^= b ^= a; 写这么复杂。。。。。 实际上就是异或操作 a=a^b; b=b^a; a=b^a; +1 上学时老师就教过这个 |
|
返回顶楼 | |
发表时间:2011-07-12
垃圾题目,这个方法没办法实现交互。。java无解
|
|
返回顶楼 | |
发表时间:2011-07-12
lyw985 写道 jancy 写道 zhangyang6380006 写道 我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;
如果2个变量都是数字,这样可以 字符串的话,就不行了。 这样比较通用: b ^= a ^= b ^= a; 写这么复杂。。。。。 实际上就是异或操作 a=a^b; b=b^a; a=b^a; b ^= a ^= b ^= a;写法错误,为什么写上去之前不验证一下呢? swap(5,3)输出: a = 3 b = 0 lyw985的写法正确。 |
|
返回顶楼 | |
发表时间:2011-07-12
haohouhou 写道 b = a + 0*(a = b)
|
|
返回顶楼 | |
发表时间:2011-07-12
workingbird 写道 lyw985 写道 jancy 写道 zhangyang6380006 写道 我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;
如果2个变量都是数字,这样可以 字符串的话,就不行了。 这样比较通用: b ^= a ^= b ^= a; 写这么复杂。。。。。 实际上就是异或操作 a=a^b; b=b^a; a=b^a; 这个是正解。 很疑问,这道题究竟是考的啥能力?考察程序员是否变态? 应该是考思维能力 |
|
返回顶楼 | |