2013-04-12 66 views
0

我想从字典中创建一个“文字完成”树java程序,这是一个文本文件,但我不知道该从哪里去。单词完成程序将匹配任何以输入的字符串开头的单词。我是java /编程新手。我将树设计成多路树,每个节点都存储一个字母作为字母和布尔变量,以指示它是否是单词的结尾(等等)。从树打印匹配

我现在正在尝试查看我读入的文件是否正常工作。但是,当我尝试打印我的树时,它无法正常工作。它不是在第一个单词后的每个单词中正确显示第一个字母。为了测试目的,我只是简单地给树添加4个单词(Base,Basement,Ma,Matthew),而不是从文件中读取。

所以我的问题是谁能告诉我为什么它不是正确打印和我需要做的下一步,以完成单词完成?

非常感谢你提前给大家抽出宝贵的时间来帮助我与我的问题

+0

请你能显示你的预期和实际产量 – Romski

+0

@Romski编辑。谢谢! – Teddy13

回答

0

它的这部分

while(t!=null) { 
    if(t.down!=null && t.right!=null) { 
     //System.out.println(t.letter + " children"); 
     //System.out.print(t.letter); 
     print(t.down); 
    } 
    t=t.right; 

当你遇到另一个词你应该打印,你t.down启动。例如,您可以将所有字母保存在相互堆叠的节点上,然后打印出来,然后继续打印树中的其他字母。

这里的问题是:t.down是另一个字的下一个字母(从当前节点的角度)。

尝试添加更多带有共同起始子字符串的词来轻松理解我的观点。

+0

嘿谢谢你的回复。打印现在是个问题,但是当我尝试使程序达到目的时,您的建议不会成为问题,这是词汇竞争 – Teddy13

+0

我可以看到以两种方式完成单词完成: 1)当某人开始打字并且你认识到你有一些词有相同的开始,你反复(用另一个键入的字母)询问输入的词是否是建议的词(你从词典中识别的词)。 2)当你知道键入的单词是字典中的某个单词的开始(无歧义)时,插入该单词。 – maricn

+0

同样的开始正是我所指的。你介意给我提供一个基于我的代码的例子吗?非常感谢你 – Teddy13