IF 没有 IF (由“不使用IF等条件判断,输出两个数中大的那个”产生的一些随想)
2011-08-19 10:32
501 查看
昨天偶然看到一道很有趣的题,题目是这样的:怎么样在不使用任何IF等判断语句以及三目运算符等判断方法,来输出两个数中大的那个数。
被这样突然一限制思维,觉得好像无从下手,心里想着,这怎么做?纠结了一会儿,然后静下心来开始用笔画,用最原始的数学方法去解决,然后很快想出了解决的方法,下面是代码:
虽然是一个小小的问题,觉得很有意思,提醒了我思想才是最重要的基础,不能因为学习了各种语言就把思想忘记了,所以我今天开了一个新的博客类别叫"Thinking In."。
然后去看了一下答案,答案中提供了另一种方法,也很好理解,就是利用两个数相减的符号位来判断,我将它实现了一下,代码如下:
但是很遗憾的是,因为JAVA自身的位运算只支持int型的数,所以如果是整数部分相等的浮点数,则没办法判断出大小来。怎么样,没有IF的世界也可以很有趣吧!
被这样突然一限制思维,觉得好像无从下手,心里想着,这怎么做?纠结了一会儿,然后静下心来开始用笔画,用最原始的数学方法去解决,然后很快想出了解决的方法,下面是代码:
import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner in = new Scanner(System.in); System.out.println("Please Input two number:"); float a=in.nextFloat(); float b=in.nextFloat(); System.out.println((a+b+Math.abs(a-b))/2); } }
虽然是一个小小的问题,觉得很有意思,提醒了我思想才是最重要的基础,不能因为学习了各种语言就把思想忘记了,所以我今天开了一个新的博客类别叫"Thinking In."。
然后去看了一下答案,答案中提供了另一种方法,也很好理解,就是利用两个数相减的符号位来判断,我将它实现了一下,代码如下:
import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner in = new Scanner(System.in); System.out.println("Please Input two number:"); float a = in.nextFloat(); float b = in.nextFloat(); float[] output = new float[2]; output[0]=a; output[1]=b; int c = (int) (a-b) >>> 31; System.out.println(output[c]); } }
但是很遗憾的是,因为JAVA自身的位运算只支持int型的数,所以如果是整数部分相等的浮点数,则没办法判断出大小来。怎么样,没有IF的世界也可以很有趣吧!
相关文章推荐
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
- 不使用if,switch and 等值判断 求出两个int数中最大的那个数详解
- 只能在有限的一些情形下使用 volatile 变量替代锁。要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:1对变量的写操作不依赖于当前值。 2该变量没有包含在具有其他
- 输入三个数,用条件表达式,不能用if语句,判断是不是两个奇数一个偶数,是就输出Y,不是就输出N。
- React中使用if else 条件判断
- pig里面没有if:不能判断一个条件后决定一个执行步骤
- 面试题:两个整型数,不准用if 、switch 、?:等判断语句求出两者大值,不能使用api
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 找出两个int型变量的最大值和最小值,不使用if/:?/switch判断语句
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句
- day01之合并两个有序链表+实现1+2+3...+n要求不能使用乘除法循环条件判断等
- React中使用if else 条件判断
- js面向对象编程:if中可以使用那些作为判断条件呢?
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 判断两个数组中是否有相同的元素,有就输出“”有“”,没有就输出“”没有“”
- pig里面没有if:不能判断一个条件后决定一个执行步骤
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 判断两个数组中是否有相同元素,有就输出有,没有就输出没有
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句