1

我正在尝试清理类的代码,并且在创建冲突方法时,Eclipse 不断给我错误“赋值的左侧必须解析为变量。这个错误发生在我所有的 if 语句中。我知道这个问题可能非常简单,但非常相似的代码正在为我的同行工作,我似乎无法解决为什么我的代码会有所不同。谢谢!

private GObject getCollidingObject (double x, double y) {
        AudioClip bounceClip = MediaTools.loadAudioClip("bounce.au");
        if (getElementAt(x, y) =! null) {
            return (getElementAt(x, y));
            bounceClip.play();
        }
        else if (getElementAt(x + 2 * BALL_RADIUS, y) =! null) {
            return(getElementAt(x + 2 * BALL_RADIUS, y);
            bounceClip.play();
        }
        else if (getElementAt(x + 2 * BALL_RADIUS, y + 2 * BALL_RADIUS) =! null) {
            return(getElementAt(x + 2 * BALL_RADIUS, y + 2 * BALL_RADIUS));
            bounceClip.play();
        }
        else if (getElementAt(x, y + 2 * BALL_RADIUS) =! null) {
            return(getElementAt(x, y + 2 * BALL_RADIUS));
            bounceClip.play();
        } else {
            return null; 
        }
4

3 回答 3

1

它应该是!=而不是=!

condition应该是:

 if (getElementAt(x, y) != null) {...}

else if (getElementAt(x + 2 * BALL_RADIUS, y) != null) {...}

等等。

于 2015-10-20T16:59:37.670 回答
1

=!不是“不是”比较(!=)。=!实际上是两个运算符=and !。或者换句话说:您的代码尝试反转null并将反转分配给方法调用。

如果要检查“不是”,请使用!=.

于 2015-10-20T16:59:49.713 回答
0

=!是这样解释的

<something> = !(boolean)
//var here = negation(boolean)

你有这个代码:

getElementAt(x, y) =! null

因此编译器错误。

通过使用不同于!=运算符来修复它。

之后,另一个问题就在这里:

return (getElementAt(x, y));
bounceClip.play();

这将引发另一个编译器错误,因为在return. 不知道如何解决它,因为我不知道你在这里的真正意图。

于 2015-10-20T16:59:25.417 回答