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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package it.heima.test;

import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

/**
*
* @author Administrator
*
*  需求:
*       在d盘下有一个加密文件a.txt(文件里只有英文和数字),密码是"nihao",当密
*    码输入正确时才能读取文件里的数据。现要求用代码来模拟读取文件的过程,并统计文件
*    里各个字母出现的次数,并将统计结果按照“a:2个;b:3个;.....”类似的格式输
*    出打印在控制台上。
*/

public class Test2 {
        public static void main(String[] args) throws IOException {
                // 定义String类型的变量存储密码
                String s = "nihao";
                // 定义键盘输入密码
                String sum = "";
                @SuppressWarnings("resource")
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入密码:");
                String s2 = sc.nextLine();
                if (s.equals(s2)) {
                        // 创建输出流对象
                        FileReader fr = new FileReader("d:\\a.txt");
                        //创建map集合对象
                        TreeMap<Character, Integer> hs = new TreeMap<Character, Integer>();
                        StringBuffer sb = new StringBuffer();
                        //读取数据并添加到集合中
                        int len = 0;
                        while ((len = fr.read()) != -1) {
                                //每读取一个字符就添加到集合中
                                sb.append((char) len);
                        }
                        //将集合中的字符转换为字符串
                        String s3 = new String(sb);
                        //再将字符串转换为字符数组
                        char[] chs = s3.toCharArray();
                        //遍历字符数组,将遍历到的字符作为键存储到集合中
                        for (char c : chs) {
                                //判断集合中是否有键值
                                if (!hs.containsKey(c)) {
                                        //如果没有键值就向集合中添加相应的键和值
                                        hs.put(c, 1);
                                } else {
                                        //如果有,将键值对应的值加1
                                        hs.put(c, hs.get(c) + 1);
                                }
                        }
                        //获取TreeMap集合中的键,保存到Set集合中
                        Set<Character> w = hs.keySet();
            //遍历集合获取键对应的值
                        for (char key : w) {
                                //按指定的格式输出统计的字符个数
                                String s4 = key + ":" + hs.get(key) + "个" + ";";
                                sum = sum + s4;
                        }
                        System.out.println(sum);
                        fr.close();
                }
        }
}

0 个回复

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