2013-04-12 67 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