2014-10-21 2 views
-2

Я получаю ошибку компиляции в следующем коде, говоря, что операторы не могут использоваться для логического или двойного.Попытка получить логическое значение в Java

Я хочу вернуть логическое значение, указывающее, находится ли x в этом диапазоне или нет.

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

ответ

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

1

Вы должны разделить каждый диапазон на два условия conbined с И:

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); 
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)); 
3

-5,0 < < = х = 2,0 не является допустимым выражением. Вам необходимо использовать (-5.0 < = x) & & (x < = 2.0), а также для других проверок.

Также помните, что Boolean не является таким же, как boolean. Один - это объект, а один - примитив. Как отметил СамТебс33.