锁定老帖子 主题:不用判断语句求俩数中的大(或者小)数
精华帖 (0) :: 良好帖 (16) :: 新手帖 (3) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-10
最后修改:2009-12-10
前段日子找工作期间,经常上网找面试题目做做。 忘了是哪家公司的题目,其中有这么一道题 说,不能使用boolean,if else等判断语句,要求求出两个数中的大数, 【add at 2009-12-10 15:33:52】另,不能用Math类
一开始想来想去没有思路,后来想想,程序中需要判断的不就是if-else等逻辑判断以及异常嘛。。。 既然不能用判断,那就只能用异常了。 所以思路是,构造一段代码,让他遇到两个数时,可以构造出异常。什么代码可以这么神奇呢? 呵呵,很简单,用数组的越界可以解决问题!
public static int getMaxValueWidthoutBoolean(int a,int b){ int[] array=new int[a]; try{ //只要b比a大,数组越界,肯定会导致异常,否则b比a小 //所以在catch模块中返回b,非异常返回a即可 array[b]=0; }catch(Exception ex){ return b; } return a; } 呵呵,没去查过别人的解法是咋样的,我觉得应该还有其他更好的解法,各位想一想,知道的告知在下,谢谢了! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-10
|
|
返回顶楼 | |
发表时间:2009-12-10
int getMaxNum(int a,int b){
double x = (double)a; double y = (double)b; return (int)(x/2+y/2+Math.abs(x/2-y/2)); } |
|
返回顶楼 | |
发表时间:2009-12-10
不用for作循环.....
|
|
返回顶楼 | |
发表时间:2009-12-10
最后修改:2009-12-10
呵呵 看错了
|
|
返回顶楼 | |
发表时间:2009-12-10
最后修改:2009-12-10
superxielei 写道 int getMaxNum(int a,int b){
double x = (double)a; double y = (double)b; return (int)(x/2+y/2+Math.abs(x/2-y/2)); } 你这个方法 不错 如果是考数学基础的话,楼主就悲剧了 |
|
返回顶楼 | |
发表时间:2009-12-10
这公司吃饱了撑的吧?
|
|
返回顶楼 | |
发表时间:2009-12-10
最后修改:2009-12-10
min = (a + b - (a - b).abs) / 2.0 sorry,有人回复了........ |
|
返回顶楼 | |
发表时间:2009-12-10
不明白为什么要用try{}catch来实现
这样比if else好吗? |
|
返回顶楼 | |
发表时间:2009-12-10
题目不让用if判断的根本原因我想就是想让你用最少的语句来实现这个功能吧,你弄个异常和if判断有什么区别啊。
|
|
返回顶楼 | |