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/