一、可讀入英文詞數大於等於1個的任意英文文本文件。
二、能讀取容納英文原版《哈利波特》10萬詞以上的文章。
三、單詞詞頻統計功能:輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,顯示對應單詞在文本中出現的次數和柱狀圖。
四、高頻詞統計功能:從鍵盤輸入高頻詞輸出的個數k,按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
五、統計文本中全部單詞數量及詞頻數,並將單詞及詞頻數按字典順序輸出到文件result.txt中。html
一、讀文本功能——讀入文本數據
二、用戶輸入功能——輸入用戶想要查詢的單詞以及想要查詢高頻單詞的個數
三、排序功能——降序排序和按字典順序排序
四、詞頻統計功能——顯示輸入單詞在文本中出現的次數和柱狀圖以及降序顯示前k個單詞的詞頻及單詞
五、寫文件功能——將輸出數據存入文件中java
(1)、Main.javagit
控制整個程序github
<一、實現對文本文件中數據的讀入
<二、對各項功能進行選擇,並調用wordcount.java中相應的函數實現各項功能編程
(2)、wordcount.java編程語言
包括四個功能函數:函數
<一、顯示詞頻和柱狀圖(histogram函數)——輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,顯示對應單詞在文本中出現的次數
和柱狀圖。
<二、輸出高頻詞(HighWord函數)——按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
<三、排序(sort函數)——降序排序和按字典順序排序
<四、寫文件(output函數)——將文本中全部單詞數量及詞頻數按字典順序輸出到文件result.txt中學習
Map<String, Integer> map = new TreeMap<String, Integer>(); BufferedReader b = null; try { b = new BufferedReader(new FileReader(A)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("文件沒有找到,請輸入正確的文件路徑!"); }
void histogram(Map<String, Integer> map){ System.out.println("請輸入須要查詢的單詞 :"); String words = in.nextLine(); String[] word= words.split(",");//輸入的單詞之間以逗號分隔 float sum; for(int i=0; i<word.length; i++) { for(Map.Entry<String,Integer> y : map.entrySet()) { //能夠查看Map類中的entrySet()方法和Entry()方法,for中是一個賦值語句 if(word[i].equals(y.getKey())) { System.out.println("單詞 —— "+y.getKey() + " 出現 (" + y.getValue()+" )次"); sum=(float)(y.getValue())/500; for(int j=0;j<sum;j++){ System.out.print("*"); } System.out.println(); } } } }
public class Main { static Scanner in = new Scanner(System.in); public static void main(String[] args)throws IOException{ Map<String, Integer> map = new TreeMap<String, Integer>(); // 讀取要處理的文件,並將它放在b中 System.out.println("~~~~~~~~詞頻統計小軟件~~~~~~~~"); System.out.println("請選擇如下功能序號:"); System.out.println("一、讀取文本"); System.out.println("二、顯示所要查詢的單詞詞頻"); System.out.println("三、輸出詞頻最高的前k個單詞"); System.out.println("四、輸出結果存入result.txt中"); System.out.println("0、退出"); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); int y= in.nextInt(); int i=0;
在一個軟件項目的開發過程當中,首先須要進行需求分析,對一個項目有總體的認知。其次,將整個項目按照功能分紅若干個模塊,每一個模塊完成本身對應的功能,而且各個模塊之間相互聯繫,協做完成全部功能。在本次詞頻統計軟件項目中,我建立了兩個類。Main類控制整個程序,讀入文本文件中的數據,顯示菜單並調用wordcount類中的各個函數。wordcount類中包含四個函數:histogram函數(顯示詞頻和柱狀圖)、HighWord函數(輸出高頻詞)、sort函數(降序排序和按字典順序排序)、output函數(將結果輸出到文件result.txt中),分別實現各自的功能,並相互聯繫實現整個軟件項目。測試
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 20 | 25 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 15 | 10 |
Development | 開發 | 250 | 300 |
Analysis | 需求分析 (包括學習新技術) | 20 | 25 |
Design Spec | 生成設計文檔 | 10 | 12 |
Design Review | 設計複審 | 10 | 25 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 20 | 15 |
Design | 具體設計 | 15 | 20 |
Coding | 具體編碼 | 200 | 300 |
Code Review | 代碼複審 | 15 | 25 |
Test | 測試(自我測試,修改代碼,提交修改) | 25 | 30 |
Reporting | 報告 | 15 | 20 |
Test Report | 測試報告 | 10 | 15 |
Size Measurement | 計算工做量 | 12 | 15 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 20 | 15 |
從PSP中能夠看出計劃完成須要的時間與實際完成須要的時間之間是有必定的差距的,主要緣由仍是基礎不紮實,對Java掌握的不熟練,致使寫代碼時很困難。同時,在第二次我的項目的完成過程當中,我深入認識到了本身在某些方面的薄弱,不管是在總體的構思上,仍是在分模塊的設計上,都不是很順利。最後經過查閱資料,請教同窗,才成功完成項目二。從此次項目中也明白了本身還有許多地方須要學習,對於Java的相關知識點須要儘快去回顧和學習,努力作好以後的項目。