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