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