我坚持以下问题:
研究以下Java类头和代码片段:
class ExamScript implements Comparable<ExamScript> { private String studentName; private int mark; ...rest of class... /** * Compares this object with the specified object for e *@param e the object to be compared *@return -1 if object is less than the specified object *@return 0 if object is equal to the specfied object **/ public int compareTo(ExamScript e) { if (mark < e.mark) return - 1; if (mark == e.mark) return 0; return 1; } }
为
compareTo
方法提供合适的文档。特别声明了从此方法返回的值的含义。根据您的规范编写
compareTo
方法的代码。
我已经记录并编写了如上所示的代码。任何人都可以向我确认我是否可以改进我的文档/编码或者这样做是否正常?
答案 0 :(得分:1)
请务必添加@returns 1 if e is greater than this object.
您可以更加具体地使用@returns。尝试使用我上面使用的格式。此外,如果从阅读代码中看不清楚,请尝试解释什么是标记,以及为什么用它来比较。
查看Oracle's standards了解详情。
答案 1 :(得分:1)
问题我发现,当成绩相等时,学生被认为是平等的(至少当算法假设a.compareTo(b)==0
暗示a.equals(b)
取决于你的使用时,这可能是一件好事
但是如果它很糟糕你可以通过比较名称而不是返回0
来解决这个问题public int compareTo(ExamScript e)
{
if (mark < e.mark)
return - 1;
if (mark == e.mark)
return studentName.compareTo(e.studentName);
return 1;
}