gpt4 book ai didi

java - Java中比较两个带有int和string参数的对象

转载 作者:太空宇宙 更新时间:2023-11-04 09:29:00 26 4
gpt4 key购买 nike

我正在尝试比较同一类中同时包含 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");
}

所以我认为,如果姓名、球队和 Jersey 号码相同,结果将打印为“相同的球员”;如果三者都不同,则结果将打印为“不同的球员”。相反,无论 Int 参数值如何,所有三个参数都会打印为相同玩家,当我将 Int 参数灰显时,它实际上显示了相同和不同玩家的结果。

最佳答案

您在平等检查中进行了 self 比较:

Player comp = (Player) o;
if (comp.team.equals(this.team))
return true;
if (comp.jerseyNumber == ((Player) o).jerseyNumber) <== RIGHT HERE
return true;

我假设你的意图是:

if (comp.jerseyNumber == this.jerseyNumber)

根据 comp 变量,我猜您提取了类型转换,但错过了一个,然后在审核方面遇到了一些麻烦。

编辑:我还建议使用快速退出,就像这样 - 否则,如果球队相同,但 Jersey 不同,那么您今天的方式会说他们是同一个人:

Player comp = (Player) o;
if (!comp.team.equals(this.team))
return false;
if (comp.jerseyNumber != this.jerseyNumber)
return false;
return true;

关于java - Java中比较两个带有int和string参数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343187/

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