java - 为什么此代码在使用 == 时会失败,但使用 <= 时却可以?

标签 java operators

我刚刚开始通过 futurelearn.com 上的类(class)学习编程。

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

工作代码如下所示:

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

但是我有一个逻辑问题。我想明白为什么我不能使用“==”而不是“<=”。当我这样做时,球会从屏幕右侧飞出。

这里有一个视频供您理解。它应该包含所有可能缺失的信息。:

https://www.futurelearn.com/courses/begin-programming/7/steps/42942

最佳答案

请记住,球并不是连续移动的 - 您是以某个固定大小的离散步骤移动它。因此,球不太可能完全落在屏幕的一端或另一端。相反,更有可能的是它意外地超出了屏幕的一侧一小部分。如果您检查球是否恰好位于屏幕一侧,您将无法正确考虑这些情况。另一方面,如果您询问球是否移过屏幕两侧,那么您将正确地解释这些情况。

关于java - 为什么此代码在使用 == 时会失败,但使用 <= 时却可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906135/

相关文章:

MySQL 大于或等于运算符忽略其或等于义务

c# - C# 中 &= 和 |= 运算符的用途是什么

php - 3个不同的等于

java - Mac 上找不到 jvm 路径

配置单元中的 java.sql.SQLException : org. apache.thrift.transport.TTransportException?

java - Spring如何从 Controller 返回 View 而不出现错误页面

python分解一个列表

java - 具有自定义类型更改的 Hibernate 字段,但对象未标记为 'dirty' 进行更新

java - 如何使用 Spring security 保护 URL?

unix - '-a' 在 Unix Shell 脚本中做什么