- import java.io.BufferedReader;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.Scanner;
- import java.util.Set;
- import java.util.TreeMap;
- /*
- * 1..电脑D盘下a.txt文件中有一行文字(含英文和数字),文件密码为“heima”,请从控制台输入密码,读取文件,
- *并将文件中的字母 统计后打印在控制台上,打印格式:a:2个;b:3个....
- */
- public class Heima_01 {
- public static void main(String[] args) {
- // 创建Map集合,存储字母及其个数
- TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
- // 封装件键盘录入数据
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入文件密码");
- String line = sc.next();
- // 判断文件密码是否正确
- if ("heima".equals(line)) {
- BufferedReader br = null;
- String lines = null;
- try {
- // 读取文件,并将文件字符串转成字符数组
- br = new BufferedReader(new FileReader("a.txt"));
- lines = br.readLine();
- char[] chs = lines.toCharArray();
- // 遍历Map集合,判断集合中是否含有数组的元素
- for (Character key : chs) {
- Integer value = tm.get(key);
- // 集合不含数组中元素,向集合中添加元素
- if (value == null)
- tm.put(key, 1);
- // 集合中含有此元素,则value值加1
- else if (value != null) {
- value++;
- tm.put(key, value);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- // 关闭资源
- if (br != null)
- br.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- // 定义字符串缓冲区
- StringBuilder sb = new StringBuilder();
- // 遍历集合,获取集合中key和value值
- Set<Character> set = tm.keySet();
- for (Character key : set) {
- Integer value = tm.get(key);
- // 判断key值是否为字母,并将key和value值拼接起来
- if ((key >= 'a' && key <= 'z') || (key >= 'A' && key <= 'Z'))
- sb.append(key).append(":").append(value).append("个;");
- }
- // 控制台上输入统计字母数
- System.out.println(sb.toString());
- }
- else{
- System.out.println("密码输入不正确");
- }
- }
- }
复制代码 |