equals()方法不起作用

时间:2015-03-01 04:31:10

标签: java equals

equals()方法应检查第一个框和多维数据集的尺寸是否相同。怎么解决?它目前无效。

程序在if处返回消息"illegal start of type"。我是这个PLZ帮助的新手

public class testNew
{

 public static void main (String []args)
 {
  Rectangle3 one = new Rectangle3(5,20);
  Box3 two = new Box3(4,4,4);
  Box3 three = new Box3(4,10,5);
  Cube3 four = new Cube3(4,4,4);

  showEffectBoth(one);
  showEffectBoth(two);
  showEffectBoth(three);
  showEffectBoth(four);
 }

  public static String showEffectBoth(Rectangle3 r)
 {
  return System.out.println(r);
 }

 boolean b = two.equals(four);

if (b == true)
{
 System.out.println("Box and cube have the same dimensions");
}


}


public class Rectangle3
{
// instance variables 
int length;
int width;

public Rectangle3(int l, int w)
{
 length = l;
 width = w;
}

public int getLength()
{
  return length;
}
public int getWidth()
{
  return width;
}
public String toString()
{
   return getClass().getName() + " - " + length + " X " + width;
}
public boolean equals(Rectangle3 obj) 
{
    if ((getLength().equals(obj.getLength()) && getWidth().equals(obj.getWidth())))
        return true;
    else
        return false;
    }

  }

2 个答案:

答案 0 :(得分:3)

首先,关于编译器错误,它与equals()方法无关。这只是因为下面的所有代码都应该在main方法中,因为它是您声明变量twofour的唯一部分:

boolean b = two.equals(four);

   if (b == true) {
        System.out.println("Box and cube have the same dimensions");
   }

另请注意,Rectangle3类不应与testNew位于同一文件中,因为两者都声明为public,如果要在同一文件中同时使用它们那么你需要从其中一个(你不会用作文件名的那个)中删除public declration

第二次,您的equals()方法在技术上是正确的(我在功能上也是这样),但这不是您在此处代码中包含的equals()方法,因为这个方法属于到Rectangle3equals(),而您在此处测试的Box3应在Cube3b

中定义

NB:请注意,根据assylias的评论,由于booleanif (b == true),因此无需使用if (b),只需{{1}}

就足够了

答案 1 :(得分:0)

这不是等于功能。这条线

boolean b = two.equals(four)

是非法的。它不在任何方法中,它引用在main()中声明的变量!