我正在开发一些东西。但是出现错误,我无法修复它。 它说''运算符 - =未定义参数类型double,boolean''在我的代码上:
if (x -= 15.0D < 0.0D) {
我只是遗漏了部分代码。任何人都知道如何解决它?我无法让它发挥作用。谢谢:))
答案 0 :(得分:8)
由于在Java中定义operator precedence的方式,-=
的优先级低于<
;因此,x -= 15.0D < 0.0D
被评估为:
x -= (15.0D < 0.0D)
或
x -= false
这不是Java中的有效表达式,因为错误说:
对于参数类型double,boolean
,运算符 - =未定义
修复取决于您要表达的内容:
如果您打算说“从x中减去15,然后将x与零进行比较”,您可以将其写为:
(x -= 15.0) < 0.0
然而,具有副作用的条件(例如,更改变量的值)令人困惑,因为它很容易误读它们,忽略了副作用。它更具可读性(我猜在语义上相同):
x -= 15.0;
if (x < 0.0) {
如果您打算说“如果x - 15小于零”,则不要使用-=
运算符,只需使用普通-
:
if (x - 15.0 < 0.0)
请注意,此处不需要内括号,因为-
的优先级高于<
。
但是,这也更容易表达为:
if (x < 15.0) {
请注意,您不需要.
,0
和D
后缀:前提是您在文字中有小数点,并且不要使用{{1 }}后缀使其为F
,十进制文字为float
类型。
double
都是具有相同值的有效15. 15D 15.0 15.D 15.0D
文字。 (就我个人而言,我更喜欢double
:我不喜欢以15.0
结尾的那个;它看起来不完整; .
看起来有点像15D
)。
答案 1 :(得分:1)
问题在于优先级。 在这种情况下,“&lt;”的优先顺序超过“ - =”因此你正在执行的“ - =”on是一个布尔值,因为比较的结果将是一个布尔值。因此,您收到错误“运算符 - =未定义参数类型(s)double,boolean”。
使用适当的括号优先处理“ - =”操作来解决它。