按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
2.程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
5.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。java
基本功能:本次設計實現的功能有讀取英文文本,將文本中詞頻數降序排列,輸出所有單詞的詞頻,顯示最高頻率的單詞的詞頻及單詞,所有單詞的詞頻寫入文件result.txt中。git
本次設計建立了三個類,Main.java Sort.java WordCont.java
1.Main.java 實現了文本中單詞的讀入並將單詞及其詞頻數按字典順序輸出到result.txt。
2.Sort.java 實現對文本中單詞數目的降序排序,找出出現頻率最高的單詞
3.WordCont.java實現了詞頻統計,將單詞及其詞頻數按字典順序輸出,並輸出文本中單詞的總數目和出現頻率最高的單詞。
4.流程圖
github
輸出英文文本中的單詞及其詞頻數。
編程
輸出文本中單詞的總數目和出現頻率最高的單詞。
編程語言
將單詞及詞頻數按字典順序寫入result.txt
ide
1.字符統計學習
//統計單詞詞頻數 TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); int count = 0; while((line=reader.readLine())!=null){ line = line.toLowerCase(); String str[] = line.split("[【】、.。,\"!--;:?\'\\] ]"); for(int i = 0; i<str.length; i++){ count++; String word = str[i].trim(); if(tm.containsKey(word)){ tm.put(word, tm.get(word)+1); }else{ tm.put(word, 1); } } } //輸出咱們想要的字符串格式 System.out.println("按字典序輸出爲:"); Iterator iterator=tm.entrySet().iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println("該英文文本中共有單詞:"+count+"個");
2.降序排序測試
public class Sort implements Comparable<Sort>{ @Override public int compareTo(Sort o) { int cmp = count.intValue() - o.count.intValue(); return (cmp == 0 ? key.compareTo(o.key) : -cmp); }
在本次程序設計中使用JAVA語言編寫程序。對JAVA語言的使用有了更深入的理解,能夠跟熟練的編寫代碼,瞭解軟件開發過程。本次實驗過程當中在網上查找了不少資料,經過參考了別人的代碼,更好的瞭解各類方法並將其運用到本身的代碼上。本次設計的我將程序分爲三個類;Main.java,Sort.java ,WordCont.java .這也便於修改程序,查找錯誤。在程序中使用TreeMap方法實現存儲元素的自動排序,調用compareTo方法來實現單詞數目的降序排序,用<key,value>映射,採用Map按鍵排序。此次實驗讓我感覺到本身在編程方面的不足,之後還需增強學習,重視實踐與理論相結合。
任務內容 | 計劃完成時間(min) | 實際完成時間(min) |
---|---|---|
計劃 | 15 | 20 |
規劃工做步驟 | 15 | 10 |
開發 | 100 | 150 |
需求分析 | 15 | 15 |
生成文檔 | 20 | 20 |
設計複審 | 10 | 5 |
代碼規範 | 20 | 18 |
具體編碼 | 180 | 220 |
代碼複審 | 10 | 5 |
測試 | 20 | 40 |
報告 | 30 | 30 |
測試報告 | 10 | 10 |
計算報告量 | 5 | 5 |
過後總結 | 10 | 10 |
GitHub源代碼地址編碼