根據英文文本文件讀出文本內容,將讀出內容中的單詞進行統計,輸出單詞和頻數,輸入想要查詢的單詞,獲得它的出現次數,也可輸出根據輸入的個數的高頻詞。html
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
2.程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
5.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。java
1.讀取文本文件,存儲過濾後單詞的列表 ;
2.輸入單詞的詞頻統計,並畫出柱狀圖;
3.輸出輸出輸入個數的高頻詞;
4.按單詞的頻數降序排序並將結果輸出在文本文件。git
1.menu()函數,根據輸入指令完成相應功能;
2.Frontk()函數,根據輸入單詞輸出出現頻數並畫出柱狀圖;
3.SortMap()函數,根據讀入文件統計英文文本詞頻並降序輸出;
4.Draw()函數,顯示前k個高頻詞頻數。github
選擇s指令統計某單詞頻數並畫出其柱狀圖:
編程
選擇k指令顯示前k個高頻詞頻數:
編程語言
選擇t指令統計文本文件中的詞頻並降序輸出在result.txt文件
ide
讀出文本文件,過濾並存儲單詞:函數
BufferedReader br = new BufferedReader(new FileReader("content.txt")); List<String> lists = new ArrayList<String>(); //存儲過濾後單詞的列表 String readLine = null; while((readLine = br.readLine()) != null){ String[] wordsArr1 = readLine.split("[^a-zA-Z]"); //過濾出只含有字母的 for (String word : wordsArr1) { if(word.length() != 0){ //去除長度爲0的行 lists.add(word); } } } br.close();
統計每一個單詞出現頻數:學習
Map<String, Integer> wordscount = new TreeMap<String,Integer>(); //存儲單詞計數信息,key值爲單詞,value爲單詞數 //單詞的詞頻統計 for (String e : lists) { if(wordscount.get(e) != null){ wordscount.put(e,wordscount.get(e) + 1); } else{ wordscount.put(e,1); } }
根據單詞出現頻數降序排序:測試
ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(tmap.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){ @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o2.getValue() - o1.getValue(); //降序 } });
在剛看到題目的時候就很擔憂,由於學過java後再不多用它,有點懵,通過看書和網上查資料以及之前寫過的代碼後,就有點信心了,可是對於畫柱狀圖壓力很大,也看了網上的畫柱狀圖的例子,可是不太會應用,後來看到有同窗用輸出方格的方式畫,很簡單也很粗糙,大體能表現出柱狀圖的內容,若是能夠的話,之後會改進這部份內容,正真的畫出柱狀圖。
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 10 | 9 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 5 | 8 |
Development | 開發 | 100 | 115 |
Analysis | 需求分析 (包括學習新技術 | 20 | 18 |
Design Spec | 生成設計文檔 | 5 | 8 |
Design Review | 設計複審 (和同事審覈設計文檔 | 5 | 4 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 5 | 6 |
Design | 具體設計 | 15 | 10 |
Coding | 具體編碼 | 60 | 70 |
Code Review | 代碼複審 | 20 | 25 |
Test | 測試(自我測試,修改代碼,提交修改 | 10 | 14 |
Reporting | 報告 | 10 | 7 |
Test Report | 測試報告 | 6 | 7 |
Size Measurement | 計算工做量 | 4 | 5 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 5 | 8 |