軟工16作業2
阿新 • • 發佈:2018-09-18
oid ids 大寫字母 過程 repo col 索引排序 根據 and
作業1
Task1:碼雲項目地址
地址:https://gitee.com/LinDaDaDa/201621123012
Task2:PSP表格
PSP2.1 | 個人開發流程 | 預估耗費時間(分鐘) | 實際耗費時間(分鐘) |
---|---|---|---|
Planning | 計劃 | 20 | 30 |
Estimate | 明確需求和其他相關因素,估計每個階段的時間成本 | 15 | 25 |
Development | 開發 | 200 | 250 |
Analysis | 需求分析 (包括學習新技術) | 30 | 40 |
Design Spec | 生成設計文檔 | 10 | 20 |
Design Review | 設計復審 | 20 | 40 |
Coding Standard | 代碼規範 | 40 | 30 |
Design | 具體設計 | 20 | 40 |
Coding | 具體編碼 | 30 | 40 |
Code Review | 代碼復審 | 20 | 50 |
Test | 測試(自我測試,修改代碼,提交修改) | 40 | 30 |
Reporting | 報告 | 20 | 40 |
測試報告 | 15 | 25 | |
計算工作量 | 15 | 30 | |
並提出過程改進計劃 | 50 | 30 |
Task3:解題思路描述
- 1.首先看到此次要求時便得知了需要動用到文件的讀取,此時我就選擇自己較為擅長的java
- 2.由於輸出都是需要小寫的,所以我先把文件中的大寫字符轉換成小寫
if(Character.isUpperCase(line.charAt(i))) Character.toLowerCase(line.charAt(i));;
- 3.統計字符數的話就每行統計一次最後相加起來就是總字符數
- 然後根據頻率的話肯定得用到索引排序MAP肯定最為合適
Task4:設計實現和關鍵代碼
1.大寫字符變小寫和統計字符數
for(int i=0;i<=line.length()-1;i++) { if(Character.isUpperCase(line.charAt(i))) //對大寫字母的判斷 Character.toLowerCase(line.charAt(i)); } wordcount+=line.length();//字符數統計 linecount ++;//行數統計
2.有效單詞數(運用的是正則表達式)
for(String words:text)
{
String[] word = words.split("[^a-zA-Z0-9]");
for(String pp:word)
{
String regex ="^[a-z]{4}[a-z0-9]*$";
if(pp.matches(regex)==true){
text2.add(pp);
}
}
}
return text2.size();
3.頻率最高的10個單詞(方法中返回的也是map)
Map<String, Integer> map = new TreeMap<String, Integer>();
for(String word:text2)
{if(map.get(word) != null){
map.put(word,map.get(word) + 1);
}else{
map.put(word,1);
}
}//統計
List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(
map.entrySet());
List<Map.Entry<String, Integer>> infoIds1 = new ArrayList<Map.Entry<String, Integer>>(
map.entrySet());
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
return ( o2.getValue()-o1.getValue());
}
}); //比較器
System.out.println("--------------排序後--------------");
for (int i = 0; i < infoIds.size(); i++) {
Entry<String,Integer> ent=infoIds.get(i);
if(i<=9){
infoIds1.add(ent);
System.out.println(ent.getKey()+":"+ent.getValue());
}
}
return infoIds1;
Task5:代碼測試截圖
Task6:單元測試
@Test
public void testWordnumber() {
assertEquals(0, jiekou.wordnumber("C:/Users/Administrator/Desktop/c1.txt"));//空文件
assertEquals(14, jiekou.wordnumber("C:/Users/Administrator/Desktop/c2.txt"));//14個單詞的純英文
assertEquals(160, jiekou.wordnumber("C:/Users/Administrator/Desktop/c3.txt"));//160個單詞的英文數字混合
}
Task7:git提交代碼
Task8:效能分析
Task9:心得體會
初步了解了對java代碼進行測試,剛開始由於geichars有大小限定導致大文件出錯,就改用了charAT。之前寫代碼只註重於功能實現,現在發現了還有效率上的優化,對軟件工程有了新一步的認識。
軟工16作業2