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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值