java compareto 函数,关于java:如何解决:compareTo >>找不到符号

这是用于家庭作业。但是,我已经编码了我作业的绝大多数内容。只有一个障碍。我也是Java的新手,所以我的术语可能有点偏离。

所以我有5种类型:

老师提供:

NameInterface,这是Name的接口文件

名称,使用2个私有字符串(名字和姓氏)作为名字和姓氏

StudentInterface,这是Student的接口文件

StudentTest,这是用于测试的主要方法

通常由老师提供,我只需要修复compareTo()。其他所有事情,例如构造函数,字段等,都已完成:

学生,使用fullName(这是一个NameInterface)和String城市

Name类具有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

学生班有一个compareTo()方法,它使用Name类的compareTo方法来比较此Name和其他Name以及该城市和其他城市

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

我的结论是"其他对象"不符合" StudentInterface"。我该如何解决?谢谢大家。

您能否粘贴完整的代码以包含重要信息(例如,StudentInterface的完整定义)?

您是否在StudentInterface中声明了int compareTo(Object other);?

这意味着接口StudentInterface没有指定compareTo方法。似乎您只在?x4>类中定义了一个。

或者,通常优选StudentInterface extends Comparable。

@chrylis是正确的,您应该使用Comparable接口,但不要忘记更新已实现的compareTo方法的签名(您将找到方法;)。

@ Tsung-TingKuo完整定义是什么意思?然后我粘贴了si和si2。

@DavidWallace和Pinkie我老师给我们的代码没有包括在内,我不认为这是解决方案,因为我认为我们只修改Student。我印象中任何接口方法都必须在类中完成,反之则不行。

@KartikChughヅ这就是解决方案。试试吧。

谢谢大家。有用。我想澄清一下-您在类中使用的所有方法都必须在接口中表示吗?我对此有些怀疑,因为我的老师告诉我们我们可以有界面中未提及的其他方法。

请不要编辑您的问题标题以告诉我们您的问题已解决。请发布该问题的答案,然后告诉我们您如何解决。

@KartikChughヅ您使用的所有方法都必须在变量的类型上表示。您有一个variable si of type StudentInterface,因此只能使用在该接口上声明的方法。

那讲得通!谢谢。

将compareTo添加到接口。 使用的所有方法必须在变量的类型上表示。 si的类型为StudentInterface,因此只能使用在StudentInterface上声明的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值