源碼連接git
(1)程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。 (2)程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。 (3)指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的 次數和柱狀圖。 (4)高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。 (5)統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt
基本功能: - 程序可以讀入任意文本文件 -用戶可以查找文件中的單詞及出現的次數 -可以對前k個高頻單詞降序輸出 擴展功能: 無
MainClass該類主要進行文件的讀取,調用其餘類,以及首頁功能界面的顯示。 Sort該類進行統計文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。 Wordcount,該類有兩個函數,count函數實現用戶輸入若干單詞後詞頻及柱狀圖的顯示,Highcount函數實現用戶想要查看的前k個高頻單詞。
首頁功能界面
查看單詞詞頻及柱狀圖
查看高頻單詞
查看全部單詞詞頻
退出系統
github
/*對原文件中的單詞按詞頻進行排序*/ File file = new File("src/result.txt"); Set<Entry<String,Integer>> mapEntries = Map.entrySet(); LinkedList<Entry<String, Integer>> List = new LinkedList<Entry<String,Integer>>(mapEntries); Collections.sort(List, new Comparator<Entry<String,Integer>>() { @Override public int compare(Entry<String, Integer> ele1, Entry<String, Integer> ele2) { return ele1.getKey().compareTo(ele2.getKey()); } }); try { if(file.exists()) { file.createNewFile(); } FileWriter writer = new FileWriter(file.getAbsoluteFile()); for(Entry<String,Integer> e : Map2.entrySet()) { writer.write(e.getKey()+":\t"+e.getValue()+"\n"); } writer.close(); System.out.println("存儲結束!能夠在文件中查看"); }catch(IOException e) {e.printStackTrace();
在本次設計過程當中我設計了3個模塊,一個是文件讀取模塊,一個是統計詞頻模塊,三是文件寫入模塊。模塊化的設計讓我在設計過程當中每個過程的完成都有不一樣的成就感。並且在調試代碼時也讓我能更加快速的找到緣由而且解決。
在本次的項目中耗時最長的就是編寫代碼的環節,一是因爲長時間沒有練習Java,好多基礎知識已經忘記了,花了一段時間來複習這些,二是因爲要學習新的內容花費了較長的時間,由於當時學習Java時文件這部分的內容時略講的因此其中的有些方法不是很清楚,三是因爲本身水平的問題,平時練習編寫代碼的時間較少,應該在從此的時間多練習。ide