试图在Java中获取布尔值

时间:2014-10-21 18:46:05

标签: java math static boolean range

我在以下代码中遇到编译错误,说操作符不能用于布尔值或双精度。

我想返回一个布尔值,表示x是否在该范围内。

public static Boolean estaEnIntervalo (double x){           
    return (-5.0<=x<=2.0 || 0.0<x<=1.0 || 2.0<=x<5.0);              
}

4 个答案:

答案 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