Sap*_*Boh -3 java double if-statement boolean
我正在开发一些东西.但是出现错误,我无法修复它.它说''运算符 - =未定义参数类型(s)double,boolean''在我的代码中:
if (x -= 15.0D < 0.0D) {
Run Code Online (Sandbox Code Playgroud)
我只是遗漏了部分代码.任何人都知道如何解决它?我无法让它发挥作用.谢谢 :)
由于在Java中定义运算符优先级的方式,-=优先级低于<; 因此,x -= 15.0D < 0.0D被评估为:
x -= (15.0D < 0.0D)
Run Code Online (Sandbox Code Playgroud)
要么
x -= false
Run Code Online (Sandbox Code Playgroud)
这不是Java中的有效表达式,因为错误说:
对于参数类型double,boolean,运算符 - =未定义
修复取决于您要表达的内容:
如果你打算说"从x中减去15,然后将x与零比较",你可以这样写:
(x -= 15.0) < 0.0
Run Code Online (Sandbox Code Playgroud)
然而,具有副作用的条件(例如,更改变量的值)令人困惑,因为它很容易误读它们,忽略了副作用.它更具可读性(我猜在语义上相同):
x -= 15.0;
if (x < 0.0) {
Run Code Online (Sandbox Code Playgroud)如果您打算说"如果x - 15小于零",则不使用-=运算符,只需使用plain -:
if (x - 15.0 < 0.0)
Run Code Online (Sandbox Code Playgroud)
请注意,此处不需要内括号,因为-优先级高于<.
但是,这也更容易表达为:
if (x < 15.0) {
Run Code Online (Sandbox Code Playgroud)请注意,您不需要.,0和D后缀:只要你有字面一个小数点,并且不使用F后缀,使之成为float,小数文字是的double类型.
15. 15D 15.0 15.D 15.0D
Run Code Online (Sandbox Code Playgroud)
都是double具有相同值的有效文字.(就个人而言,我更喜欢15.0:我不喜欢以a结尾的.那个;它对我来说看起来不完整;而且15D看起来有点太像了150).