解决方法:compareTo >> cannot find symbol

How to resolve: compareTo >> cannot find symbol

这是家庭作业。但是,我已经对作业的绝大部分进行了编码。只有一个障碍。我也是 Java 的新手,所以我的术语可能有点偏差。

所以我有5种类型: 老师提供:

主要是老师提供的,我只需要修复compareTo()。构造函数、字段等其他所有内容均已完成:

名称 class 有一个 compareTo() 重写,它使用 Java 的内置 compareTo 首先比较这个和其他

  public int compareTo(Object other)
  {
  int result = last.compareTo(((Name)other).last);

  if (result == 0)
  {   
      // last names are equal; check first
     result = first.compareTo(((Name)other).first);
  }  // end if 

  return result; 
} // end compareTo

学生 class 有一个 compareTo() 使用 Name class compareTo 来比较这个名字和其他名字以及这个城市和其他城市

  public int compareTo(Object other)
  {
  Student localStudent = (Student) other;
  int result = (fullName.getName()).compareTo((localStudent.getName()).getName());

  if (result == 0)
  {   
      // last names are equal; check first
     result = city.compareTo(localStudent.getCity());
  }  // end if 

  return result; 
  } // end compareTo

我尝试在 StudentTest 中调用 Student class 的 compareTo,但它说找不到符号。

  StudentInterface si = new Student();
  si.setCity("Kingston");
  NameInterface ni = new Name("Andrew","Pletch");
  si.setName(ni);

  StudentInterface si2 = new Student();
  si2.setCity("Kingston");
  NameInterface ni2 = new Name("Aram","Agajanian");
  si2.setName(ni2);
  System.out.println(" compare as (should be +ve) " + si.compareTo(si2));

错误是:

StudentTest.java:27: error: cannot find symbol
  System.out.println(" compare as (should be +ve) " + si.compareTo(si2));        
                                                        ^
symbol:   method compareTo(StudentInterface)
location: variable si of type StudentInterface
1 error

我的结论是"Object other"不符合"StudentInterface"。我该如何解决这个问题?谢谢大家。

将compareTo添加到界面。所有使用的方法都必须在变量的类型上表示。 si 是 StudentInterface 类型,所以你只能使用在 StudentInterface 上声明的方法。