黑马程序员技术交流社区

标题: 刚做的一个测试题,我正则用的不太好,所以用集合做的 [打印本页]

作者: dreamwork    时间: 2016-4-18 14:44
标题: 刚做的一个测试题,我正则用的不太好,所以用集合做的
package cn.lianxi;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Set;
import java.util.TreeMap;
/*6、统计一个文本文件中字符出现的次数,结果存入另外的一个文本文件中。例如:

a :  21 次
b :  15 次
c :  15 次
d :  7 次
e :  9 次
f :  3 次
g :  30 次*/

public class Text7 {
        public static void main(String[] args) throws IOException {
//                读文本
                BufferedReader bur = new BufferedReader(new FileReader("g:\\a.txt"));
                String s ="";
                String line=null;
                while((line=bur.readLine())!=null){
//                        把读的数据给s
                        s=line;
                }
//                把字符串转成字符数组
                char [] ch=s.toCharArray();
//                创建一个treemap集合
                TreeMap<Character, Integer> tm=new TreeMap<Character, Integer>();
//                遍历把数组元素添加到集合
                for(char c: ch){
                        Integer i = tm.get(c);
//                        利用treemap集合,统计元素个数
                        if(tm.get(c)==null){
                                tm.put(c, 1);
                        }else{
                                i++;
                                tm.put(c, i);
                        }
                }
//                创建可变字符串缓冲区
                StringBuilder sb =new StringBuilder();
//                写数据
                BufferedWriter buw = new BufferedWriter(new FileWriter("g:\\b.txt"));
//                遍历集合
                Set<Character> set=tm.keySet();
                for(Character key : set){
                        Integer value=tm.get(key);
//                        把键值对按要求拼接添加到sb
                        sb=sb.append(key).append(": ").append(value).append("次");
                        s=sb.toString();
//                        写
                        buw.write(s);
//                        写一个删一个
                        sb=sb.delete(0, sb.length());
                        buw.newLine();
                }
                bur.close();
                buw.close();
        }
       

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2