深圳同城快跑 上机试题02:从文本中读取内容,并统计不同英语单词出现的次数,最后输出到新的文本文件

来源:互联网 发布:淘宝hd版怎么不了图片 编辑:程序博客网 时间:2024/06/11 15:44
package test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Iterator;import java.util.TreeMap;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestTreeMap {public static void main(String[] args) throws IOException {String addr="E:/workspace/test/src/test/english.txt";BufferedReader bufr = new BufferedReader(new FileReader(addr));StringBuffer sbuf = new StringBuffer();// 缓冲字符串String line = null;while ((line = bufr.readLine()) != null) {sbuf.append(line);// 追加到缓冲字符串中}bufr.close();// 读取结束Pattern expression = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词String str1 = sbuf.toString().toLowerCase();// 转换成小写Matcher matcher = expression.matcher(str1);// 定义string1的匹配器TreeMap myTreeMap = new TreeMap();// 创建树映射 存放键/值对int n = 0;// 文章中单词的总数Object word = null;// 文章中的单次Object num = null;// 出现的次数while (matcher.find()) {// 是否匹配单词word = matcher.group();n++;// 单词数加1if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过num = myTreeMap.get(word);// 得到单词出现的次数Integer count = (Integer) num;// 强制转换myTreeMap.put(word, count.intValue() + 1);} else {myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中}}System.out.println("文章内容如下:");System.out.println(str1);System.out.println("统计分析如下:");System.out.println("文章中单词总数:" + n+"个");System.out.println("具体的信息在当前目录的result.txt文件中");BufferedWriter bufw=new BufferedWriter(new FileWriter("E:/workspace/test/src/test/result.txt"));Iterator iter=myTreeMap.keySet().iterator();//得到数映射集合的迭代器Object key=null;bufw.write("文件来自:"+addr+"内容如下:");bufw.write(sbuf.toString());bufw.newLine();while(iter.hasNext()){ key=iter.next(); System.out.println(key+":"+myTreeMap.get(key));  bufw.write((String)key+":"+myTreeMap.get(key)); bufw.newLine();}bufw.write("统计分析如下:");bufw.write("文章中单词总数:" + n+"个");bufw.newLine();bufw.write("文章中不同单词总数:" + myTreeMap.size()+"个");bufw.close();}}

1 0
原创粉丝点击