【问题标题】:String method cannot be found in a main class method在主类方法中找不到字符串方法
【发布时间】:2014-01-18 18:41:16
【问题描述】:

我有大约一年的 Java 编程经验,我在主类中创建了一个静态方法,并且由于某种原因,每当我编译它时都会给我一个错误,说 String 类中的 compareTo() 方法不能找不到。

方法如下:

 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) 
                           ^

符号:方法 compareTo(String) 地点:类度假村

ResortOrganizer.java:159: error: cannot find symbol
        else if (resortList[mid].compareTo(resortName)>0) 
                                ^

符号:方法 compareTo(String) 地点:类度假村

2 个错误

有人可以解释为什么会这样吗?我感觉我忘记了一些重要的事情。

【问题讨论】:

  • 向我们展示您的Resort 课程,我们可以告诉您问题所在。
  • 你的 mid 只是mid = high,也许你的意思是mid = low + (high - low)/2;mid = (low + high) &gt;&gt;&gt; 1;

标签: java string class methods main


【解决方案1】:

您的 Resort 方法似乎没有声明 compareTo 方法。该方法通常属于Comparable 接口。确保你的类实现它。

此外,compareTo 方法通常被实现为接受与调用该方法的对象相同类型的参数。因此,您不应传递String 参数,而应传递Resort

或者,您可以比较度假村的名称。例如

if (resortList[mid].getResortName().compareTo(resortName)>0) 

【讨论】:

  • 啊!多么愚蠢,我忘记使用我的 Resort 类中的 getter 方法来比较我的 Resort 对象中的字符串字段和 Argument。这解决了它,它似乎。感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多