我正在创建一个添加单词的程序,包括它的含义,并删除单词。换句话说,一本字典。我对这种特殊方法有疑问。
public void insert(WordMeaning w1) {
WordMeaningNode current = list;
WordMeaningNode back = null;
WordMeaningNode temp = new WordMeaningNode(w1);
try {
boolean found = false;
while (current != null && !found) {
if (temp.w1.getWord().compareToIgnoreCase(current.w1.getWord()) <= 0) {
found = true;
} else {
back = current;
current = current.next;
}
}
temp.setNode(current);
if (back == null) {
list = temp;
} else {
back.setNode(temp);
}
} catch (NullPointerException e) {
}
}
现在一切正常,减去了方法没有检测到“if(temp.w1 ....)”及其后的“w1”这一事实。 WordMeaning w1调用两个字符串,该字符串给出了单词的名称及其定义。
我的第一个想法是我放置了WordMeaningNode temp无法检测到w1,但我不再确定。
答案 0 :(得分:1)
我的猜测是WordMeaningNode没有名为w1
的成员。
您已获得w1
的位置,请将其与WordMeaningNode
类型的成员名称交换为WordMeaning
。
所以,如果你的班级是:
public class WordMeaningNode {
public WordMeaningNode(WordMeaning meaning) {
this.meaning = meaning;
public WordMeaning meaning;
}
你应该把:
temp.meaning.getWord().compareToIgnoreCase(current.meaning.getWord()) <= 0
// ------- -------
传递给构造函数的变量的名称是相关的。