我有一年的Java编程经验,我在主类中创建了一个静态方法,出于某种原因,每当我编译它时都会给出一个错误,说明String类中的compareTo()方法可以&# 39;找不到。
以下是方法:
public static void displaySpecificResort(String resortName, Resort[] resortList)
{
int low = 0;
int high = resortList.length - 1;
int mid;
while (low <= high)
{
mid = low + (high - low);
if (resortList[mid].compareTo(resortName)<0)
low = mid + 1;
else if (resortList[mid].compareTo(resortName)>0)
high = mid - 1;
else resortList[mid].display();
}
if(resortList[mid].getName().compareTo(resortName)!= 0)
System.out.println("Resort could not be found.");
}
这是我尝试编译时给出的错误:
ResortOrganizer.java:157: error: cannot find symbol
if (resortList[mid].compareTo(resortName)<0)
^
symbol:方法compareTo(String) location:class Resort
ResortOrganizer.java:159: error: cannot find symbol
else if (resortList[mid].compareTo(resortName)>0)
^
symbol:方法compareTo(String) location:class Resort
2个错误
有人可以解释为什么这样做吗?我有一种感觉,我忘记了重要的事情。
答案 0 :(得分:3)
您的Resort
方法似乎没有声明compareTo
方法。此方法通常属于Comparable
接口。确保你的类实现它。
此外,compareTo
方法通常实现为接受与调用方法的对象相同类型的参数。因此,您不应该传递String
参数,而应传递Resort
。
或者,您可以比较度假村的名称。例如
if (resortList[mid].getResortName().compareTo(resortName)>0)