烟头上的探戈

God help those who help themselves.
posts - 102, comments - 59, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
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();
}
}
厚德载物,大道若弦...

Feedback

#1楼    回复  引用    

2008-01-07 12:31 by 落雪 [未注册用户]
能给点解释吗?
有很多不明白

#2楼 [楼主]   回复  引用  查看    

2008-01-07 13:32 by 烟头上的探戈      
已经重新写了注释了!

#3楼    回复  引用    

2008-05-01 13:31 by 读取一段英文 [未注册用户]
very good!
how can i distinguish between "apple" and "appples"?

#4楼    回复  引用    

2008-05-02 10:32 by pochonlee [未注册用户]
不同的单词键值是不同的。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-01-07 13:31 编辑过


相关链接: