A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

统计一个文件中所有字符的出现了多少次,包括空格,换行,回车,然后将结果写在times.txt中。空格用什么表示

2 个回复

倒序浏览
唉吆喂去
回复 使用道具 举报
public class Demo02 {
        public static void main(String[] args) throws IOException {
                /*
                 
                 *
                 * 思路:
                 *         A:因为要统计的是每个字符出现了多少次,所以应该定义双列集合来记录。
                 *            字符做键,出现的次数做值。
                 *         B:因为要统计的是字符出现的次数,所以我们应该创建字符输入流来读取内容(一次读一个字符)
                 *  C:因为读取到的内容是int类型,所以应该强转成char类型的数据。
                 *  D:判断转换后的内容再双列集合中是否存在
                 *          存在: 就将次数+1,然后重新存储
                 *          不存在:就将次数记录为1
                 *  E:能走到这里,说明双列集合中的内容就是我们想要的数据。遍历集合,把内容写入到指定文件中即可。
                 */
                TreeMap<Character, Integer> tm = new TreeMap<>();                //A
                BufferedReader br = new BufferedReader(new FileReader("a.txt"));        //B
                int len = 0;                //用来记录读取到的内容的
                while ((len = br.read()) != -1) {
                        char key = (char) len; // 这里的key代表的就是文件中的某个字符                //C
                        tm.put(key, !tm.containsKey(key) ? 1 : tm.get(key) + 1);        //D
                }
                br.close();
                //System.out.println(tm);
                //E:能走到这里,说明双列集合中的内容就是我们想要的数据。遍历集合,把内容写入到指定文件中即可。
                BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));
                for (Character key : tm.keySet()) {
                        switch (key) {
                        case '\t':
                                bw.write("\\t" + "=" + tm.get(key));
                                break;
                        case '\r':
                                bw.write("\\r" + "=" + tm.get(key));
                                break;
                        case '\n':
                                bw.write("\\n" + "=" + tm.get(key));
                                break;
                        default:
                                bw.write(key + "=" + tm.get(key));
                                break;
                        }
                        bw.newLine();
                }
                bw.close();
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马