为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中比较两个具有int和string参数的对象

在Java中比较两个具有int和string参数的对象

慕标琳琳 2023-05-17 14:37:30
我正在尝试比较来自同一类的两个对象,这些对象同时包含 String 和 Int 参数。这是我的实验室作业,我尝试只使用 .equals 方法而不覆盖它,但没有用,我对如何比较两个对象的 String 和 Int 参数做了更多研究。所以我构建了一个重写等于,它只适用于 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 Parameter 变灰时,它实际上显示了 Same 和 Different Players 结果。
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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


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变量,我猜你提取了演员表但遗漏了一个,然后在审查时有点紧张。


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


Player comp = (Player) o;

if (!comp.team.equals(this.team))

    return false;

if (comp.jerseyNumber != this.jerseyNumber)

    return false;

return true;


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信