java统计英文单词个数程序

public class englishTest {

 public static void main(String args[]) throws IOException {

  BufferedReader buf = new BufferedReader(
    new FileReader("d:/english.txt"));

  BufferedWriter bufw = new BufferedWriter(
    new FileWriter("d:/result.txt"));

  StringBuffer sbuf = new StringBuffer();// 缓冲字符串
  String line = null;
  while ((line = buf.readLine()) != null) {
   sbuf.append(line);
   sbuf.append(" ");// 追加到缓冲字符串中
   if (!line.isEmpty()) {// 去文本空行
    bufw.newLine();
    bufw.write(line);
   }
  }

  buf.close();// 读取结束

  String string1 = sbuf.toString().toLowerCase();// 转换成小写

  Pattern expression = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词
  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("文章中单词总数" + n + "个");
  System.out.println("具体的信息在当前目录的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();

   System.out.println((String) key + ":" + myTreeMap.get(key));
  }
  bufw.write("english.txt中的单词总数" + n + "个");
  bufw.newLine();
  bufw.write("english.txt中不同单词" + myTreeMap.size() + "个");
  bufw.close();
 }
}

总结:

         这个程序包含了文本文件统计单词个数及去掉空行的方法…………

         涵盖了 java正则表达(pattern类matcher类)的用法 、Treemap迭代器(iterater)字符流写入写出等基础知识的用法

 

 再列出个pattern类的小用法:

 public class patternPractice {
         private static final String REGEX = ":";
         private static final String INPUT = "one:two:three:four:five";

         public static void main(String[] args) throws IOException {

                 Pattern expression = Pattern.compile(REGEX);
                 String[] items = expression.split(INPUT);
                 int n = 0;
                 for (String s : items) {
                      System.out.println(s);
                       n++;
                      System.out.println(n);
                 }
        }

}

转载于:https://my.oschina.net/xiufeng/blog/83525

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值