本周的实验要求在之前实现统计单词的基础之上(可以见之前博客的统计单词的那个实验),对其进行修改成所需要的格式,统计字母出现频率的功能,并按照一定的格式把最终结果的用特定的格式在文本中显示出来
从文件中读取:
BufferedReader buf=new BufferedReader(new FileReader("D:\应用\java_workplace\word1\piao.txt")); System.out.println("Read under this dir English.txt"); StringBuffer sbuf=new StringBuffer();//缓冲字符串 String line=null; while((line=buf.readLine())!=null){ sbuf.append(line);//追加到缓冲字符串中 } buf.close();//读取结束
将文中单词进行匹配,大写转换为小写:
Pattern expression=Pattern.compile("[a-zA-Z]+");
String string1=sbuf.toString().toLowerCase();
统计单词:
while(matcher.find()) {//是否匹配单词 word=matcher.group();//得到一个单词 n++; if(myTreeMap.containsKey(word)) {//如果包含该键,单词出现过 num=myTreeMap.get(word);//得到单词出现的次数 Integer count=(Integer)num;//强制转化 myTreeMap.put(word,new Integer(count.intValue()+1)); } else { myTreeMap.put(word,new Integer(1));//否则单词第一次出现,添加到映射中 } }
程序结果:
上课感受:
本次实验感觉并不是太难,以前也做过统计字母单词的实验,但是还是花费时间比较长,主要原因在于自己在改以前的代码,以前的代码也没怎么加注释,再次看的时候也没怎么看懂,然后改起来改的一塌糊涂,越做越麻烦。后来开始自己分块实现,重新做才慢慢的完成。
千万别改代码,可以借用一部分,但一定要知道怎么用,乱加代码的结果就是代码写的越来越乱。