IF 没有 IF (由“不使用IF等条件判断,输出两个数中大的那个”产生的一些随想)

来源:互联网 发布:jar格式软件 编辑:程序博客网 时间:2024/05/16 07:16

        昨天偶然看到一道很有趣的题,题目是这样的:怎么样在不使用任何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的世界也可以很有趣吧!

原创粉丝点击