解决方法:compareTo >> cannot find symbol
How to resolve: compareTo >> cannot find symbol
这是家庭作业。但是,我已经对作业的绝大部分进行了编码。只有一个障碍。我也是 Java 的新手,所以我的术语可能有点偏差。
所以我有5种类型:
老师提供:
- NameInterface,这是Name
的接口文件
- 姓名,使用 2 个私有字符串,名字和姓氏,用于名字和姓氏
- StudentInterface,这是Student的接口文件
- StudentTest,这是用于测试的主要方法
主要是老师提供的,我只需要修复compareTo()。构造函数、字段等其他所有内容均已完成:
- Student,它使用 fullName(这是一个 NameInterface)& String city
名称 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 上声明的方法。
这是家庭作业。但是,我已经对作业的绝大部分进行了编码。只有一个障碍。我也是 Java 的新手,所以我的术语可能有点偏差。
所以我有5种类型: 老师提供:
- NameInterface,这是Name 的接口文件
- 姓名,使用 2 个私有字符串,名字和姓氏,用于名字和姓氏
- StudentInterface,这是Student的接口文件
- StudentTest,这是用于测试的主要方法
主要是老师提供的,我只需要修复compareTo()。构造函数、字段等其他所有内容均已完成:
- Student,它使用 fullName(这是一个 NameInterface)& String city
名称 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 上声明的方法。