-1

我被困在以下问题上:

研究以下 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根据您的规范编写该方法的代码。

我已经记录并编写了如上所示的代码。任何人都可以为我确认我是否可以稍微改进我的文档/编码,或者这样可以吗?

4

2 回答 2

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;
}
于 2012-04-28T19:15:10.793 回答
1

确保添加@returns 1 if e is greater than this object.

您可以更具体地使用 @returns。尝试使用我上面使用的格式。此外,如果从阅读代码中看不出来,请尝试解释什么是标记,以及为什么要使用它来比较。

查看Oracle 的标准以获取更多信息。

于 2012-04-28T19:07:08.730 回答