Java 如何将类传递到方法中,并基于该类的参数返回布尔值?

Java 如何将类传递到方法中,并基于该类的参数返回布尔值?,java,class,methods,parameters,boolean,Java,Class,Methods,Parameters,Boolean,我在一个方法中遇到了问题,该方法接收两个类对象并返回一个布尔值。我知道在if语句的每个条件下都需要一个return语句,一个返回false,另一个返回true。im面临的问题是每个对象在10x10多维阵列网格上都有一个(i,j)坐标。当两个物体具有相同的(i,j)时,游戏应该结束 这是我遇到麻烦的方法。它接收生物c1和生物c2并返回一个布尔值。我会用什么方法来实现这一点 public static boolean sameSquare(Creature c1, Creature c2) {

我在一个方法中遇到了问题,该方法接收两个类对象并返回一个布尔值。我知道在if语句的每个条件下都需要一个return语句,一个返回false,另一个返回true。im面临的问题是每个对象在10x10多维阵列网格上都有一个(i,j)坐标。当两个物体具有相同的(i,j)时,游戏应该结束

这是我遇到麻烦的方法。它接收生物c1和生物c2并返回一个布尔值。我会用什么方法来实现这一点

public static boolean sameSquare(Creature c1, Creature c2) {
    // if c1 and c2 have identical (i, j) coordinates, return true
    // else return false
    c1 = Creature(human);
    c2 = Creature(vampire);
    if (c1 == c2) {
      return true;
      System.out.println("you bit the human");
    }else {
      return false;
    }

   }
对此方法的调用如下所示

sameSquare(human, vampire);
人类和吸血鬼的创作对象如下:

System.out.print("Enter (i, j) for vampire: ");
int newI = input.nextInt();
int newJ = input.nextInt();
Creature vampire = new Creature('V', newI, newJ);


System.out.print("Enter (i, j) for human: ");
int humanI = input.nextInt();
int humanJ = input.nextInt();
Creature human = new Creature('H', humanI, humanJ);

你可以在你的生物类中重写isEqual方法来定制类之间的比较方式

在本例中,看起来您需要比较每个类的I和J位置

然而,仅仅因为它们的位置而认为这些生物“平等”有点奇怪。他们还是不一样

也许可以在您的生物类中定义一个方法,如:

public Boolean hasSamePositionAsCreature( Creature other )
{ 
   if( other.I == this.I && other.J == this.J )
   {
       return true
   }

   return false
}

在两个对象上使用==时,比较引用的不是值。

c1 = Creature(human);
c2 = Creature(vampire);
c1 == c2 // Will always be false!!
你需要覆盖生物类中的equals方法


不能使用==进行对象比较,这将检查对象的地址而不是内容

为了比较两个对象,您需要重写类中的equals方法,然后执行适当的检查并相应地返回布尔值。在您的情况下,等于方法是:

public boolean equals(Creature obj){
    if(obj!=null &&(this.i==obj.i && this.j==obj.j))
        return true
    else 
        return false;
}
现在,您可以比较两个对象,如下所示:

c1.equals(c2)
c1.equals(c2)