我有一个类,SpellCheck,(以及其他各种东西)根据Interactions窗口中给出的文件名创建一个trie。例如,当我输入java SpellCheck small.txt时,我知道创建了Lexicon / dictionary,因为它是由SpellCheck中的其他方法显示的。
public class SpellCheck{
// the dictionary
private LexiconTrie dict;
// Constructor; creates window elements
public SpellCheck(String[] files) {
dict = new LexiconTrie(files);
我需要在我的另一个类LexiconTrie中访问LexiconTrie dict(迭代,根,节点等)中的信息。但是,每当我尝试访问它时(即使使用SpellCheck.dict,它也会给出“dict在SpellCheck中具有私有访问权限”的错误(或类似的内容)。
在这种情况下,我还没有完全理解私人/公共课的互动吗? (如果我没有提供足够的信息,请告诉我) --------- EDIT / UPDATE ---------------------
这是SpellCheck中的方法
public void doAutoComplete() {
Collection<String> arr = dict.getCompletions(curText.trim().toLowerCase(), num_value);
String intro = "Up to " + num_value + " completions";
display(arr, "No matches found", intro);
}
我需要在LexiconTrie中编写方法getCompletions()
。我的教授为我们实现了一个GUI界面。只要用户在搜索栏中键入字母,此GUI界面就会创建一个调用doAutoComplete
的搜索栏。在LexiconTrie中,我应该写getCompletions
来返回LexiconTrie dict
中找到的匹配(“完成”)(在SpellCheck中私下创建和存储)。
我看到了沿着这些方向编写方法:
// Method you have to implement
public Collection<String> getCompletions(String lowerCase, int max) {
String searchWord = lowerCase;
int maxReturned = max;
LinkedList trieMatches = new LinkedList();
// this is as far as I got, it won't even print the search word.
// I get an error from trying to look into dict with .containsWord
if (dict.containsWord(searchWord)){
System.out.println(searchWord);
//add word/prefix to LinkedList
//add all children and their children up until max#
}
else{
return null;
}
}
答案 0 :(得分:1)
我需要在我的另一个类LexiconTrie中访问LexiconTrie dict(迭代,根,节点等)中的信息。
这看起来很奇怪(虽然没有看到更多代码但很难说)。
通常,您不想访问另一个LexiconTrie实例,而是希望在this
上运行。
所以而不是
void someMethod(SpellCheck spellCheck){
spellCheck.dict.something();
}
你会有
void someMethod(){
something();
}
// called from spellcheck as
this.dict.someMethod();
答案 1 :(得分:1)
创建一个访问私有变量的方法:
public LexiconTrie getDict(){
return dict;
}