猿问

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

我正在尝试比较来自同一类的两个对象,这些对象同时包含 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 结果。


慕标琳琳
浏览 122回答 1
1回答

芜湖不芜

您在平等检查中进行了自我比较:Player comp = (Player) o;if (comp.team.equals(this.team))&nbsp; &nbsp; return true;if (comp.jerseyNumber == ((Player) o).jerseyNumber) <== RIGHT HERE&nbsp; &nbsp; return true;我假设你打算:if (comp.jerseyNumber == this.jerseyNumber)根据comp变量,我猜你提取了演员表但遗漏了一个,然后在审查时有点紧张。编辑:我还建议使用快速退出,就像这样 - 否则,如果球队相同,但球衣不同,你今天的方式会说他们是同一个人:Player comp = (Player) o;if (!comp.team.equals(this.team))&nbsp; &nbsp; return false;if (comp.jerseyNumber != this.jerseyNumber)&nbsp; &nbsp; return false;return true;
随时随地看视频慕课网APP

相关分类

Java
我要回答