【发布时间】:2023-04-04 11:55:01
【问题描述】:
我正在尝试比较同一类中同时包含 String 和 Int 参数的两个对象。
这是我的实验室作业,我尝试仅使用 .equals 方法而不覆盖它,但没有奏效,我对如何比较两个对象的 String 和 Int 参数进行了更多研究。所以我构建了一个覆盖 equals 并且它只适用于我测试每个参数时的 String 参数,Int 参数一直返回为 True,所以我不确定我哪里出错了。
已更新 好的,现在我开始工作了,我试图弄清楚如果名称不同,或者团队名称不同,则返回 false。我想过使用 if 和 else 但嵌套 if-else?
//This is my equals method to compare the String and Int parameter.
public boolean equals(Object o)
{
Player comp = (Player) o;
if (o == this) {
if (comp.team.equals(this.team)) {
return true;
} else if (comp.jerseyNumber == this.jerseyNumber) {
return true;
}
}else
return false;
}
//And this is the method that calls on Player.
player1.readPlayer();
//Prompt for and read in information for player 2
player2.readPlayer();
//Compare player1 to player 2 and print a message saying
//whether they are equal
if (player1.equals(player2))
{
System.out.println("Same Players");
}else
{
System.out.println("Different Players");
}
所以我认为,如果姓名、球队和球衣号码相同,我希望结果打印为相同的球员,或者如果三者不同,则打印出不同的球员。相反,无论 Int 参数值如何,所有三个参数都会打印为 Same player,当我将 Int 参数变灰时,它实际上显示了相同和不同的玩家结果。
【问题讨论】:
-
好的,现在我开始工作了,我试图弄清楚如果名称不同,或者团队名称不同,则返回 false。我想过使用 if 和 else 但嵌套 if-else?
-
你说
if (o == this)--想一想这句话的意思。 -
好吧,我会调用 Object o 来与 this 进行比较,这是类的参数,对吧?我不擅长术语
-
您实际上是在说
if (other object is the same object as this object),在这种情况下,结果是instatrue。 (对了,你还需要看看你尝试player.equals("not a player")时会发生什么。) -
我修好了,好像是这样
java public boolean equals(Object o) { if (o == this) return true; Player comp = (Player) o; if (!comp.team.equals(this.team)) return false; if (comp.jerseyNumber != this.jerseyNumber) return false; else return true; }
标签: java