检查,如果多个整数大于一个整数

时间:2013-06-24 19:36:56

标签: java variables

我正在尝试编写if语句,检查3个数字是否都大于20(例如)。

这是我认为可行的:

x = 30;
y = 40;
z = 60;

if ((x&y&z) > 20) {
    System.out.println("true");
}

可悲的是,它并不是那样的。任何人都可以帮助我吗?

注意:我知道你可以做到

if (blabla && blabla && blabla) {

我只是想要一个更快的方式。

3 个答案:

答案 0 :(得分:3)

如果通过更快你意味着更快打字,那么我认为你运气不好。但请注意

x > 20 && y > 20 && z > 20 

是短路的,所以你真的无法提高效率,因为无论如何你必须对每个变量进行至少一次比较。

此外,仅仅为了您自己的个人启蒙,&bitwise-AND运算符,当与整数参数一起使用时(正如您使用它),它是非短路逻辑AND操作员与布尔值一起使用。

答案 1 :(得分:0)

没有比#34; blabla"更快的方式来写下来了。如果您要比较的数字远远超过3个,那么您将使用一些循环。但我猜你已经知道了。

另请注意,单个&的含义与&&不同。

答案 2 :(得分:0)

你写的这句话毫无意义,因为整数不能真正与一个&签署以确定三者中哪一个更大。 (除非你故意使用比特级别,我相信情况并非如此)。

如果你想让它成为一个布尔表达式(也就是说,只使用>一次),我建议你这样做:

if(Math.min(x,Math.min(y,z))> 20){ ... }

不确定3个单独的布尔值会短多少。

编辑: 忘了说,就运行时间而言,这当然比3布尔效率低得多。但是,如果它只是比较你想要的3个整数而你并不关心它的效率(因为实际上,它不像你在大多数情况下可以看出差异),这可行。

编辑2: 澄清了第一句话的意思。