我的问题:我有2个对象,想要使用重载的.equals()来比较被比较的两个对象的名称和颜色属性,如果它们相同,它将返回true。
我有两个对象。 car1和car2
GameCar car1 = new GameCar ("MyBuddy", "Red", 19);
GameCar car2 = new GameCar();
GameCar类有3个私有成员变量:
private String name;
private String color;
private int position;
以下是GameCar的两个构造函数 -
GameCar()
{
name = null;
color = null;
position = 0;
}
GameCar(String n, String c, int p)
{
name = n;
color = c;
position = p;
}
为了让car2获取其信息,我有这个:
car2.getCarInfo();
getCarInfo()的定义 -
public void getCarInfo()
{
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter the car name: ");
name = keyboard.next();
System.out.print("Enter the color: ");
color = keyboard.next();
System.out.print("Enter the starting position: ");
position = keyboard.nextInt();
}
现在这里是equals()重载函数 -
public boolean equals(GameCar car)
{
if (name == car.name) return true;
return false;
}
这是我使用equals() -
的地方System.out.println("Same cars? " + car1.equals(car2));
由于某种原因,equals()函数,即使我在进入equals()之前将car2.name和car1.name设置为完全相同,它仍会返回false。
然而 ---如果我在重载的equals()中设置了name =“something”和car.name =“something”,那么它就可以了。
答案 0 :(得分:2)
将您的equals()方法更改为:
public boolean equals(GameCar car)
{
if (name.equals(car.name)) return true;
return false;
}
请检查this post
答案 1 :(得分:0)
你可能遇到了
之间的区别name.equals(car.name)
和
name == car.name