201621123075徐建民做業2

1、碼雲地址

https://gitee.com/WoShiLiangChaoWeiDeShiYou/PersonalProject-Java/tree/master/wordcountjavascript

2、我的psp表格

PSP2.1 我的開發流程 預估耗費時間(分鐘) 實際耗費時間(分鐘)
Planning 計劃 30 50
· Estimate 明確需求和其餘相關因素,估計每一個階段的時間成本 30 60
Development 開發 100 300
· Analysis 需求分析 (包括學習新技術) 50 100
· Design Spec 生成設計文檔 60 80
· Design Review 設計複審 40 50
· Coding Standard 代碼規範 40 60
· Design 具體設計 60 150
· Coding 具體編碼 20 60
· Code Review 代碼複審 30 0
· Test 測試(自我測試,修改代碼,提交修改) 0 0
Reporting 報告 20 0
· 測試報告 15 0
· 計算工做量 30 0
· 並提出過程改進計劃 0 0

3、解題思路

一、本題我選用的編程語言是Java
二、要統計txt文件中單詞數目,就要對txt文件的內容進行讀取,使用流,就寫了一個;須要對讀取的數據內容進行判別分析,單詞、空格、字符、數字等; 對於重複出現的單詞進行統計次數;無論大小寫仍是單詞等都要進行統計,最後對每種字符進行分類和統計輸出;這就用到了Java語言對字符串判斷的知識點和分類統計的知識點
三、對於編碼的設計,我先對類進行了劃分,而後纔開始編碼,我的以爲這樣比較有效率
四、還有一點就是遇到問題時怎麼解決,遇到的問題大部分都是上百度查了而後本身理解以後進行嘗試,嘗試了不少不少遍最終仍是成功了,說明堅持就是勝利!java

4、設計實現過程

一、劃分的類:git

  • Word類,用來對字符進行統計
  • File_rw類,用來對文本文件進行讀取和寫入
  • Main類,對全部的類進行調用,而後實現代碼的功能
    二、代碼說明
  • Word類是核心類,裏用getWordnumber方法統計單詞數量,getCharnumber方法統計字符數量,getLine統計行數,getWordcount方法統計單詞出現次數。
  • 雖然對單詞次數進行了統計,但沒有對它次數進行輸出,目前來說沒有用武之地
import java.util.Map;

public class Word{
    
    private int wordnumber=0;
    private int charnumber=0;
    private int line=0;
    private Map<String,Integer> wordcount;
    String text;
    public Word(String text) {
        this.text = text;
    }
    public int getWordnumber() {
        String str=text;
        String[] words=str.split("\\s*[^0-9a-zA-Z]+");
        for(String s:words) {
            if(s.matches("[a-zA-Z]{4,}[a-zA-Z0-9]*")) {
                wordnumber++;
            }
        }
        return wordnumber;
    }
    public int getCharnumber() {
        for(int i=0;i<text.length();i++) {
            char c=text.charAt(i);
            if(c > 31 && c < 127 ||c == 10) {
                charnumber++;
            }
        }
        return charnumber;
    }
    public int getLine() {
        String[] lines=text.split("\r\n");
        for(int i=0;i<lines.length;i++) {
            if(lines[i].trim().length()!=0) {
                line++;
            }
        }
        return line;
    }
    public Map getWordcount() {//統計每一個單詞出現次數
        String []wordnum=text.split("\\s");
        for(int i=0;i<wordnum.length;i++) {
            if(wordnum[i].length()>=4) {
                char c;
                for (int j = 0; j < 4; j++) {
                    c = wordnum[i].charAt(j);
                    if (!(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')) {
                        if(wordcount.get(wordnum[i]) != null) {
                            wordcount.put(wordnum[i], wordcount.get(wordnum[i])+1);
                            
                        }
                        else {
                            wordcount.put(wordnum[i], 1);
                        }
                    }
            }
        }
    }
        return wordcount;
    
}        
    }
  • File_rw類中用readToString方法對文件進行讀取。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class File_rw {
   public String readToString(String filepath) throws IOException {
       File file =new File(filepath);
       FileInputStream files=new FileInputStream(file);
        Long filelength =file.length();
        byte[] by =new byte[filelength.intValue()];
        StringBuffer buf = new StringBuffer();
       if(file.isFile()&&file.exists()) {
           
        
            if(files.read(by)!=-1) {
                buf.append(new String(by));
            }
               
       }files.close();
      return buf.toString();
   }
}

5、心路歷程與收穫

我的項目的難度確實有些大,本身要作一個完美的項目更是難上加難,思考了好久纔開始着手寫代碼,而且實現的功能還十分簡陋。好比對於字符單詞處理若是使用正則表達式。因爲本身以前沒有好好學習,如今才以爲書到用時方恨少的感受。不少代碼包括一些基礎簡單的都要上網查資料或者諮詢同窗。本身以後會更認真更努力去完善本身的不足,爭取進步正則表達式

相關文章
相關標籤/搜索