Java 比较if语句中的两个数字范围?

Java 比较if语句中的两个数字范围?,java,if-statement,sprite,Java,If Statement,Sprite,我试图找出一种方法来比较if语句中的两个数字范围。我正在使用的方法返回一个布尔值,以查看两个精灵是否重叠,我目前正在考虑通过比较它们的位置来实现它。精灵为60X60,其x和y位置参考其左上角 我走错方向了吗?如果不是,通过If语句比较这些范围的最佳方法是什么 编辑: 这是我的尝试。我以为它在工作,但它似乎并不总是正确地拾取重叠 public boolean overlaps(Sprite s) { if ( (s.getX() >= this.getX()) &&

我试图找出一种方法来比较if语句中的两个数字范围。我正在使用的方法返回一个布尔值,以查看两个精灵是否重叠,我目前正在考虑通过比较它们的位置来实现它。精灵为60X60,其x和y位置参考其左上角

我走错方向了吗?如果不是,通过If语句比较这些范围的最佳方法是什么

编辑: 这是我的尝试。我以为它在工作,但它似乎并不总是正确地拾取重叠

public boolean overlaps(Sprite s)
{
    if ( (s.getX() >= this.getX()) && (s.getX() <= (this.getX() + 60)) )
    {
        if ( (s.getY() >= this.getY()) && (s.getY() <= (this.getY() + 60)) )
        {
            return true;
        }

        else if ( (s.getY() + 60) >= this.getY() && ((s.getY() + 60) <= (this.getY() + 60)) )
        {
            return true;
        }
    }

    else if ( (s.getX() + 60) >= this.getX() && ((s.getX() + 60) <= (this.getX() + 60)) )
    {
        if ( (s.getY() + 60) >= this.getY() && ((s.getY() + 60) <= (this.getY() + 60)) )
        {
            return true;
        }

        else if ( (s.getY() >= this.getY()) && (s.getY() <= (this.getY() + 60)) )
        {
            return true;
        }
    }

    return false;

}

最简单的方法可能是利用Java库中已有的功能。一种可能性是使用

首先为宽度和高度定义一些常量:

public class Sprite
{
  private static final int SPRITE_WIDTH  = 60;
  private static final int SPRITE_HEIGHT = 60;
那么,使用相交方法实现重叠应该非常容易:


向我们展示你的代码和你的尝试。使用equals方法。
  public boolean overlaps(Sprite s)
  {
    Rectangle r1 = new Rectangle(this.getX(), this.getY(), SPRITE_WIDTH, SPRITE_HEIGHT);
    Rectangle r2 = new Rectangle(s.getX(), s.getY(), SPRITE_WIDTH, SPRITE_HEIGHT);
    return r1.intersects(r2);
  }