1.码云地址:

 

https://gitee.com/GTAlluka/PersonalProject-Java

 

结对小伙伴的学号:201621123030

博客地址:https://www.cnblogs.com/jerkol/p/9748576.html

码云地址:https://gitee.com/JeremyGilbert/


3.解题思路描述:

我个人原因没有完成第二次作业,所以以叶崇的代码为蓝本进行修改。根据尤学长提出的建议,我们首先解决了代码写死的问题,增加了文件读取和保存的功能,按照作业要求增加了新的统计功能(具体在下面作业中展示)。

4.设计过程

1、首先解决文件读取的问题。思路是读取文件存入字符串中。叶崇的代码,本来是设定了一个255大小的字符串存储,显然是不够的,但又懒得把这个改成动态,所以,就把空间定义到一百万了。

2、作业要求,统计定长的词组词频。我主要是写这一块,然后发现自己审题错误了,写成了统计定长单词的词频。

5.代码说明,展示出项目关键代码,并解释思路与注释说明。

 1、这个是统计定长单词。因为我和叶崇是分开写这个的,那时候他的文件读取还没完成,所以我这里自己用bufferread写了一个文件读取的过程。读取后按行操作,使用tokenizer方法,将词分割。要注意的是,标点符号也会被算入单词中,所以我提前进行了一次标点符号换为空格的操作。 统计的词,使用hashmap存储,value存储单词,key存储频次。另外,顺手在这里就把结果输出了。。。

public void countLong(String path) {  

 

          String regex = "[【】、.。,\"!--;:?\'\\]]";   
          try {  
              //读取要处理的文件  
              BufferedReader br=new BufferedReader(new FileReader(path));  
              String value;  
              while((value=br.readLine())!=null){  
                  value=value.replaceAll(regex, " ");  
                  //使用StringTokenizer来分词 
                  StringTokenizer tokenizer = new StringTokenizer(value);  
                  while(tokenizer.hasMoreTokens()){  
                      String word=tokenizer.nextToken();  
                      if(word.length()!=wordlong) {
                      continue;
                      }
                      if(!hashMap.containsKey(word)){    
                          hashMap.put(word, new Integer(1));    
                      }else{    
                          int k=hashMap.get(word).intValue()+1;    
                          hashMap.put(word, new Integer(k));    
                      }    
                  }  
              }  
              //遍历HashMap,输出结果  
              Iterator iterator=hashMap.keySet().iterator();    
              while(iterator.hasNext()){    
                  String word=(String) iterator.next();    
                  System.out.println(word+":\t"+hashMap.get(word));    
              }    
          } catch (FileNotFoundException e) {  
              e.printStackTrace();  
          } catch (IOException e) {  
              e.printStackTrace();  
          }  
      }  
 
测试用文件是泰戈尔的一篇诗。
 

7.结合在构建之法中学习到的相关内容与结对项目的实践经历,描述结对的感受,是否1+1>2?

 对于两个编程基础相对薄弱的人来说,结对编程的效率不太高。两个人坐在一块儿干瞪眼。好在,根据学长提出的建议,先解决了程序写死的问题,完成了一个文件读写的类。算是整个结对项目突破性的进展。还有一个很深的感受,作业一定要及时做,拖延到截止日期,就不想做了(我的第二次作业),导致第三次作业也没办法顺利完成——没有前置的源代码,对单元测试不了解(还是没搞懂单元测试如何编写),单元测试目前只建立了一个包,但是内置的代码,着实不知道如何编写。

 

 posted on 2018-10-07 21:07  高天0.0  阅读(170)  评论(2编辑  收藏  举报