java读取文章计算单词个数_java统计英文单词个数程序

这个Java程序演示了如何从文本文件中读取内容,计算英文单词个数,并使用正则表达式、TreeMap和迭代器进行处理。程序首先读取文章,去除空行,然后使用正则表达式匹配单词并存储在TreeMap中,最后输出统计信息和结果。
摘要由CSDN通过智能技术生成

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]+");// 定义正则表达式匹配单词

Matchermatcher = 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文件中");

Iteratoriter = 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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值