我正在尝试编写一个if
语句来检查 3 个数字是否都大于 20(例如)。
这是我认为可行的:
x = 30;
y = 40;
z = 60;
if ((x&y&z) > 20) {
System.out.println("true");
}
可悲的是,它不是那样工作的。谁能帮我?
注意:我知道你可以做到
if (blabla && blabla && blabla) {
我只是想要一个更快的方法。
如果你的意思是更快地打字,那么我认为你不走运。但请注意
x > 20 && y > 20 && z > 20
是短路的,因此您确实无法提高效率,因为无论如何您都必须对每个变量执行至少一次比较。
此外,仅出于您个人的启发,当与整数参数一起使用时(当您使用它时)&
是按位与运算符,当与布尔值一起使用时它是非短路逻辑与运算符。
没有比“blabla”更快的方法来写下它。如果要比较的数字多于 3 个,则可以使用一些循环。但我想你已经知道了。
另请注意,单曲与单曲&
的含义不同&&
。
您编写的语句没有意义,因为整数不能真正与 & 符号连接以确定三者中的哪一个更大。(除非您有意使用位级别,我认为情况并非如此)。
如果你想让它成为一个布尔表达式(也就是说,只使用 > 一次),我建议你这样做:
if (Math.min(x, Math.min(y,z)) > 20){ ... }
不确定那比 3 个单独的布尔值短了多少。
编辑:忘了说,就运行时间而言,这当然比 3 个布尔值效率低得多。但是,如果它只是比较您想要的 3 个整数并且您不关心它的效率(因为实际上,在大多数情况下您看不到差异),这将起作用。
编辑2:澄清了我第一句话的意思。