1

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

这是我认为可行的:

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

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

可悲的是,它不是那样工作的。谁能帮我?

注意:我知道你可以做到

if (blabla && blabla && blabla) {

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

4

3 回答 3

3

如果你的意思是更快地打字,那么我认为你不走运。但请注意

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

是短路的,因此您确实无法提高效率,因为无论如何您都必须对每个变量执行至少一次比较。

此外,仅出于您个人的启发,当与整数参数一起使用时(当您使用它时)&按位与运算符,当与布尔值一起使用时它是非短路逻辑与运算符。

于 2013-06-24T19:40:52.657 回答
0

没有比“blabla”更快的方法来写下它。如果要比较的数字多于 3 个,则可以使用一些循环。但我想你已经知道了。

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

于 2013-06-24T19:41:59.167 回答
0

您编写的语句没有意义,因为整数不能真正与 & 符号连接以确定三者中的哪一个更大。(除非您有意使用位级别,我认为情况并非如此)。

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

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

不确定那比 3 个单独的布尔值短了多少。

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

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

于 2013-06-24T19:54:37.580 回答