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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1169646761 中级黑马   /  2014-9-7 00:27  /  800 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.test;

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.TreeMap;

public class Test6 {

        /**
         * @param args
         * 6,统计某个.txt中每个字符出现的次数 统计结果按照字典顺序排列写入到times.txt中
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new FileReader("day22笔记.txt"));        //创建输出流对象
                TreeMap<Character, Integer> tm = new TreeMap<>();                                                //创建双列集合
                int ch;
                while((ch = br.read()) != -1) {                                                                                        //从缓冲区读读取字符
                        char c = (char)ch;                                                                                                        //因为已经类型提升,所以需要强转为char
                        /*if(!tm.containsKey(c)) {                                                                                        //如果不包含这个键
                                tm.put(c, 1);                                                                                                        //将该键和值为1存入
                        }else {                                                                                                                                //如果包含了这个键
                                tm.put(c, tm.get(c) + 1);                                                                                //将键和值加1存入
                        }*/
                        tm.put(c, !tm.containsKey(c) ? 1 : tm.get(c) + 1);                                       
                }
               
                br.close();                                                                                                                                //关流
                BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));        //创建流对象,关联times.txt
                for(Character c : tm.keySet()) {                                                                                //遍历双列集合
                        switch (c) {                                                       
                        case '\t':                                                                                                                        //匹配是\t
                                bw.write("\\t" + "=" + tm.get(c));                                                                //写出\t和\t对应出现的次数
                                break;
                        case '\n':                                                                                                                        //匹配是\n
                                bw.write("\\n" + "=" + tm.get(c));                                                                //写出\n和\n对应出现的次数
                                break;
                        case '\r':                                                                                                                        //匹配是\r
                                bw.write("\\r" + "=" + tm.get(c));                                                                //写出\r和\r对应的出现的次数
                                break;
                        default:
                                bw.write(c + "=" + tm.get(c));                                                                        //写出其他字符出现的次数
                                break;
                        }
                        bw.newLine();                                                                                                                //没写一个就换行一次
                }
               
                bw.close();
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马