java - 如何编写一个 equals 方法来比较一个团队与另一个团队?

标签 java equals tostring

public class Team {

    private String name, sport;
    private int numOfWins, numOfLosses;
    public Team(String name, String Sport){
        this.name= name;
        this.sport= Sport;
        numOfWins= 0;
        numOfLosses= 0;
    }

    public int addAnotherWin(){
        return numOfWins++;
    }

    public int addAnotherLoss(){
        return numOfLosses++;
    }

    public int getNumWins(){
        return numOfWins;
    }

    public int getNumLosses(){
        return numOfLosses;
    }

    public void resetWinsAndLosses(){
        numOfWins= numOfWins*0;
        numOfLosses= numOfLosses*0;
    }

    public double getPercentOfGamesWon(){
        double z= numOfWins/ numOfWins+numOfLosses;
        return z;
    }

    public boolean equals(){    

    }

    public String toString(){

    }
} 

所以我的 equals 方法应该比较两个团队,如果他们的 PercentOfGamesWon 彼此相等,则返回是否相等,但我不知道如何写,请帮忙?我需要帮助的另一件事是 toString,我不确定它的用途以及我应该在其中写什么。我刚刚开始编码,如果这是一个菜鸟问题,我很抱歉。

最佳答案

我强烈建议引用 What issues should be considered when overriding equals() 中的答案

首先查看所比较的对象是否实际上是一个团队(使用 instanceof),然后比较百分比:

public boolean equal(Object obj) {
     if(!obj instanceof Team) 
          return false;

     return getPercentOfGamesWon() == ((Team) obj).getPercentOfGamesWon();
} 

现在你可以调用一个Team的equals方法并传入另一个Team来进行比较:

Team team1 = new Team();
Team team2 = new Team();

boolean equal = team1.equals(team2);

正如 @MarsAtomic 在问题的评论部分中提到的,您确实应该实现 compareTo(Team) 方法。此方法应根据百分比是更高、更低还是相同返回一个数字:

class Team implements Comparable<Team> {

     public int compareTo(Team team) {
          int ourPercent = getPercentOfGamesWon();
          int theirPercent = team.getPercentOfGamesWon();

          if(ourPercent > theirPercent)
               return 1;
          else if(ourPercent < theirPercent)
               return -1;
          else
               return 0; //the same
     }
}

关于java - 如何编写一个 equals 方法来比较一个团队与另一个团队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329647/

相关文章:

java - 重写 equals() 方法以检查共享继承的对象中的维度相等性

java - 如何通过 setVisible() 方法 wicket ajax 更改方法中模型的可见性

java - java 中的日期比较搜索今天、明天

c# - object.ReferenceEquals 或 == 运算符?

javascript - toString(16) 带小数点

javascript - 如何使 Javascript "toString"隐式方法文化感知

java:在 BigInteger 的情况下 for 循环如何工作

java - 如何在 Vert.x 中运行多个顶点?

Java关于equals和compareTo方法的问题

vb.net - 从 DataGridView 选定单元格获取文本