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 == otherCan
是 true
,则此调用将 始终 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
)排序顺序,如果第二个字符串应该排在第一位,则为正数。
此方法用于比较两个候选人的姓名。 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 == otherCan
是 true
,则此调用将 始终 return 0
.
} else if(name < otherCan){
return name < 0
这一行不应该编译,因为它试图在 return 和 int
.
boolean
} else if(name > otherCan){
return name > 0
与之前的注释相同;这不应该编译。 } }
这整个方法是不必要的。只需调用 name.compareToIgnoreCase(otherCan.getName())
就足够了,因为如果字符串相等,它将 return 0
,如果第一个字符串在第二个之前出现,则为负数(不一定 -1
)排序顺序,如果第二个字符串应该排在第一位,则为正数。