Java 如何解决:比较>&燃气轮机;找不到符号

Java 如何解决:比较>&燃气轮机;找不到符号,java,object,interface,compare,compareto,Java,Object,Interface,Compare,Compareto,这是家庭作业。然而,我已经完成了任务中最重要的部分。只有一个路障。我也是Java新手,所以我的术语可能有点不太合适 所以我有5种类型: 由教师提供: NameInterface,它是名称的接口文件 Name,它使用两个私有字符串first和last作为名字和姓氏 StudentInterface,这是Student的接口文件 学生测试,这是主要的测试方法 主要由老师提供,我只需要修复compareTo()。构造函数、字段等所有其他操作都已完成: 学生,使用全名(一个名称接口)和字符串城市

这是家庭作业。然而,我已经完成了任务中最重要的部分。只有一个路障。我也是Java新手,所以我的术语可能有点不太合适

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

  • NameInterface,它是名称的接口文件
  • Name,它使用两个私有字符串first和last作为名字和姓氏
  • StudentInterface,这是Student的接口文件
  • 学生测试,这是主要的测试方法
主要由老师提供,我只需要修复compareTo()。构造函数、字段等所有其他操作都已完成:

  • 学生,使用全名(一个名称接口)和字符串城市
Name类有一个compareTo()重写,它使用Java的内置compareTo来比较这个first和其他first

  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
学生类有一个compareTo(),它使用Name类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中调用学生类的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

我的结论是“对象-其他”不符合“学生界面”。我如何解决这个问题?谢谢大家。

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

您是否声明了
int compareTo(Object other)内部
StudentInterface
?这意味着接口
StudentInterface
没有指定
比较方法。您似乎只在
Student
类中定义了一个。或者,通常情况下,
StudentInterface extends Comparable
@chrylis是正确的,您应该使用
Comparable
接口,但不要忘记将已实现的
compareTo方法的签名更新为
方法(您将了解如何更新;))。请不要编辑您的问题标题来告诉我们您的问题已解决。请贴出这个问题的答案,告诉我们你是如何解决的。