gpt4 book ai didi

java - equals() 方法不起作用

转载 作者:行者123 更新时间:2023-12-01 22:26:01 25 4
gpt4 key购买 nike

equals() 方法应该检查第一个盒子和立方体的尺寸是否相同。如何修复它?目前还不起作用。

程序在 if 处返回消息“非法类型开始”。我是这个新手,请帮忙

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;
}

}

最佳答案

首先,关于您遇到的编译器错误,它与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 声明(您不会将其用作文件名)

第二,您的 equals() 方法在技术上是正确的(我猜功能上也是如此),但它不是您的 equals() 方法包含在您的代码中,因为它属于 Rectangle3,而您在此处测试的 equals() 应该在 Box3 中定义>立方体3

NB:请注意,根据 assylias 的评论,由于 bboolean ,因此无需使用 if ( b == true),只要 if (b) 就足够了

关于java - equals() 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28790109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com