我在以下代码中遇到编译错误,说操作符不能用于布尔值或双精度。
我想返回一个布尔值,表示x
是否在该范围内。
public static Boolean estaEnIntervalo (double x){
return (-5.0<=x<=2.0 || 0.0<x<=1.0 || 2.0<=x<5.0);
}
答案 0 :(得分:4)
您不能像在数学中那样以这种方式组合关系运算符。 Java如何解释-5.0<=x<=2.0
:
-5.0<=x
生成boolean
,但boolean<=2.0
没有意义。
您必须为每个绑定创建单独的表达式。
return ((-5.0<=x && x<=2.0) || (0.0<x && x<=1.0) || (2.0<=x && x<5.0));
答案 1 :(得分:3)
-5.0&lt; = x&lt; = 2.0不是有效表达式。你需要使用(-5.0&lt; = x)&amp;&amp; (x <= 2.0),并且对于其他检查也是类似的。
还要记住布尔值与布尔值不同。一个是对象,一个是原始对象。正如SamTebbs33指出的那样。
答案 2 :(得分:1)
您必须将每个范围拆分为两个与AND结合的条件:
return ((-5.0<=x && x<=2.0) || (0.0<x&&x<=1.0) || (2.0<=x&&x<5.0));
现在,您的条件检查x是否在以下三个范围内:
[-------------------------------]
(----] [------------]
-5 0 1 2 5
由于这些范围重叠,因此您只需要一个范围条件:
return (-5.0<=x && x<=5.0);
答案 3 :(得分:0)
以下是无效的布尔表达式
(-5.0 <= x <= 2.0)
必须改为
(x <= 2.0 && x >= -5.0)
此外,您必须返回Boolean
个对象。
return new Boolean((x <= 2.0 && x >= -5.0) || (x <= 1.0 && x > 0.0) || (x < 5.0 && x >= 2.0));
否则,像我一样重新排列表达式,并将返回类型更改为boolean