Java 为什么此代码在使用==时失败,而在使用<;时失败?

Java 为什么此代码在使用==时失败,而在使用<;时失败?,java,operators,Java,Operators,我刚开始在futurelearn.com学习编程 我有一个位图和一个球。任务是为x方向的边界编码 工作代码如下所示: if ((mBallX <= mBall.getWidth()/2 && mBallSpeedX < 0) || (mBallX >= mCanvasWidth - mBall.getWidth()/2 && mBallSpeedX > 0)){ mBallSpeedX = -mBallSpeedX; if

我刚开始在futurelearn.com学习编程

我有一个位图和一个球。任务是为x方向的边界编码

工作代码如下所示:

if ((mBallX <= mBall.getWidth()/2 && mBallSpeedX < 0) || (mBallX >= mCanvasWidth - mBall.getWidth()/2 && mBallSpeedX > 0)){
        mBallSpeedX = -mBallSpeedX;
if((mBallX=mCanvasWidth-mBall.getWidth()/2&&mBallSpeedX>0)){
mBallSpeedX=-mBallSpeedX;

但我有一个逻辑问题。我想知道为什么我不能用“==”代替"请记住,球不是连续移动的——你是以固定大小的离散步骤移动它。因此,球不太可能精确地落在屏幕的一端或另一端。相反,它更可能意外地超出屏幕的一侧一些微小的量。如果你检查球正好在屏幕的一侧,您无法正确解释这些情况。另一方面,如果您询问球是否已移动过屏幕的两侧,则您将正确解释这些情况。

请记住,球不是连续移动的,而是以固定大小的离散步骤移动。因此,球不太可能恰好落在屏幕的一端或另一端。相反,它更可能意外地超出屏幕的一侧一些微小的量。如果你检查球是否正好落在屏幕的一侧,你将无法正确解释这些情况。另一方面,如果你问r球已经移动过屏幕两侧,那么您将正确解释这些情况。

感谢您的快速帮助:)我现在明白了:)谢谢您的快速帮助:)我现在明白了:)