使用compareTo(String)获取错误说明类型为String未定义

时间:2014-02-17 21:51:44

标签: java string tree compareto

public node add(String newWord, int ln, node cur) {
       if (cur == null) {
           return new node(newWord,ln);
       }

       int result=newWord.compareTo(cur.word); //compareTo is underlined suggesting an error


       if ( result == 0) ;
       else if (result < 0) {
           cur.left = add(newWord,ln, cur.left);
       } else {
           cur.right = add(newWord,ln, cur.right);
       }
       return cur;
   }

   public void add(String word, int ln) {
       root = add(word,ln, root);
   }

我正在使用Eclipse,红色下划线表示

  

“方法compareTo(String)未定义类型String”

。我该如何解决这个问题?

关于节点的

treemap代码..

class treemap<String, Integer> {

   private class node {
      String word;
      int line;
      node left;
      node right;

      node(String wd, int ln){
          word=wd;
          line=ln;
      }
   }
   private node root;

   public treemap(){
       root=null;
   }

这是我使用javac时显示的内容:

  

错误:找不到符号

     

int result = newWord.compareTo(“test”);

     

symbol:方法compareTo

     

location:类型为String的变量newWord

     

其中String是一个类型变量:

     

String extends在类treemap

中声明的Object

我尝试用字符串“hello”替换newWord,然后下划线消失了。但我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

这里“String”不是java.lang.String,它是使用treemap类的定义声明的类型参数。 您正在使用泛型类,String是此类的类型变量。

换句话说,这个:

class treemap<String, Integer> {

   private class node {
      String word;
      int line;
      node left;
      node right;

      node(String wd, int ln){
          word=wd;
          line=ln;
      }
   }
   private node root;

   public treemap(){
       root=null;
   }

......具有与此相同的含义:

class treemap<T, U> {

   private class node {
      T word;
      int line;
      node left;
      node right;

      node(T wd, int ln){
          word=wd;
          line=ln;
      }
   }
   private node root;

   public treemap(){
       root=null;
   }

如果你想让T扩展String而U来扩展Integer,那么你应该像这样定义你的类:

class treemap<T extends String, U extends Integer> {

答案 1 :(得分:0)

乍一看,参数'cur.word'导致了这个问题。尝试使用“test”暂时替换它,看看是否有编译错误。

我认为cur.word无法访问

答案 2 :(得分:-2)

您可能希望使用equal()。这是一个例子:

String one = "Dog";
String two = "dog";
if (one.equalsIgnoreCase(two)) {
  System.out.println("Words are the same");
} else {
  System.out.println("Words are not the same");
}

if (one.equals(two)) {
    System.out.println("Words are the same- Caste Sensative");
} else {
    System.out.println("Words are not the same -- Caste Sensative ");
}