我正在尝试比较来自同一类的两个对象,这些对象同时包含 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;
添加回答
举报
0/150
提交
取消