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,然后下划线消失了。但我该如何解决这个问题?
答案 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 ");
}