2016-12-15 1 views
-4

Cette méthode est utilisée pour comparer les noms de deux candidats. Renvoie 0 si le nom de ce candidat est le même que le nom de otherCan; retourne < 0 si le nom de ce candidat est inférieur au nom de otherCan; renvoie> 0 si le nom de ce candidat est supérieur au nom de otherCan.Programmation Java: comment utiliser compareTo lors de la comparaison des noms des candidats dans un document texte

@Override 
    public int compareTo(Candidate otherCan) { 
     if(name = otherCan){ 
     return this.name.compareToIgnoreCase(otherCan.getName()); 
    } else if(name < otherCan){ 
      return name < 0 
     } else if(name > otherCan){ 
     return name > 0 
     } 
} 

Comment puis-je les comparer et qu'est-ce que retour> 0 et < 0 signifie?

+0

Pourquoi? – haifzhan

+0

duplicata possible de http://stackoverflow.com/questions/3718383/why-should-a-java-class-implement-comparable – ControlAltDel

+0

'if (name = otherCan) {' est incorrect; il doit être 'if (name == otherCan) {'. Le seul '=' est pour assigner une valeur; le double est pour comparer deux choses. – NRitH

Répondre

1

Cet exemple présente de nombreux problèmes.

public int compareTo(Candidate otherCan) { 
     if(name = otherCan){ 

Comme je l'ai souligné dans un commentaire, cela doit être ==; sinon, vous affectez la valeur otherCan à name.

 return this.name.compareToIgnoreCase(otherCan.getName()); 

Si name == otherCan est true, alors cet appel toujours retour 0.

} else if(name < otherCan){ 
      return name < 0 

Cette ligne ne devrait pas compiler parce qu'il essaie de renvoyer un boolean dans une méthode qui renvoie un int.

 } else if(name > otherCan){ 
     return name > 0 

Identique à la note précédente; cela ne devrait pas compiler. } }

Cette méthode entière est inutile. Il suffit d'appeler name.compareToIgnoreCase(otherCan.getName()), car il retournera 0 si les chaînes sont égales, un nombre négatif (pas nécessairement -1) si la première chaîne vient avant la deuxième dans l'ordre trié, et un nombre positif si la deuxième chaîne doit venir en premier. Pourquoi comparer le nom avec otherCan par `<` or `>`?

+0

Merci beaucoup pour votre confirmation. J'étais confus, mais merci beaucoup pour votre aide !!! –