Java 读取一段英文文档统计每个单词出现的次数和单词的总数

来源:互联网 发布:jstl调用java类的方法 编辑:程序博客网 时间:2024/05/12 13:37
 Java 读取当前目录下一段英文文档统计每个单词出现的次数和单词的总数 英文文档名字为 english.txt

代码如下

import java.util.*;import java.util.regex.*;import java.io.*;public class UserTreeMap{public static void main(String args[]) throws IOException{    BufferedReader buf=new BufferedReader(new FileReader("english.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();//转换成小写  Matcher matcher=expression.matcher(string1);定义string1的匹配器  TreeMap myTreeMap=new TreeMap();//创建树映射 存放键/值对  int n=0;//文章中单词总数  Object word=null;//文章中的单词  Object num=null;//出现的次数  while(matcher.find()){//是否匹配单词  word=matcher.group();//得到一个单词-树映射的键  n++;//单词数加1  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));//否则单词第一次出现,添加到映射中  }  }  System.out.println("统计分析如下:");  System.out.println(""t 文章中单词总数"+n+"个");  System.out.println("具体的信息在当前目录的result.txt文件中");  BufferedWriter bufw=new BufferedWriter(new FileWriter("result.txt"));  Iterator iter=myTreeMap.keySet().iterator();//得到树映射键集合的迭代器  Object key=null;  while(iter.hasNext()){//使用迭代器遍历树映射的键  key=iter.next();  bufw.write((String)key+":"+myTreeMap.get(key));//键/值写到文件中  bufw.newLine();  }  bufw.write("english.txt中的单词总数"+n+"个");  bufw.newLine();  bufw.write("english.txt中不同单词"+myTreeMap.size()+"个");  bufw.close();}} 厚德载物,大道若弦...

转博客:http://www.cnblogs.com/pochonlee/archive/2007/11/04/949007.html