Java 编程:比较文本文档中候选人姓名时如何使用 compareTo

Java Programming: How to use compareTo when comparing the names of the candidates in a text document

此方法用于比较两个候选人的姓名。 Returns如果这个候选人的名字和otherCan的名字一样则为0; returns < 0 如果这个候选人的名字小于 otherCan 的名字; returns > 0 如果这个候选人的名字大于 otherCan 的名字。

@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
        }
}

如何比较它们以及 return > 0 和 < 0 是什么意思?

这个例子有很多问题。

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

正如我在评论中指出的,这必须是 ==;否则,您会将 otherCan 的值分配给 name.

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

如果 name == otherCantrue,则此调用将 始终 return 0.

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

这一行不应该编译,因为它试图在 return 和 int.

的方法中 return 一个 boolean
        } else if(name > otherCan){
        return name > 0

与之前的注释相同;这不应该编译。 } }

这整个方法是不必要的。只需调用 name.compareToIgnoreCase(otherCan.getName()) 就足够了,因为如果字符串相等,它将 return 0,如果第一个字符串在第二个之前出现,则为负数(不一定 -1)排序顺序,如果第二个字符串应该排在第一位,则为正数。