输出某个英文文本文件中 26 字母出现的频率
package com.company; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.HashMap; import java.util.Set; import java.text.NumberFormat; public class SearchWord { public static void main(String[] args) throws Exception { HashMap<Character, Integer> map1 = new HashMap<>(); // HashMap<Character, Integer> map2 = new HashMap<>(); File f1 = new File("src/Piao.txt"); //定义一个字符缓冲输入流更快的读取数据//此处用字符输入流最适宜 BufferedReader br = new BufferedReader(new FileReader(f1)); //定义个字符串用来保存每次读取的数据 String len; long total=0; while ((len = br.readLine()) != null) { char[] chars = len.toCharArray(); for (char aChar : chars) { if ((aChar >= 'a' && aChar <= 'z') || (aChar >= 'A' && aChar <= 'Z')) { //是字符进入 total++; //判读字符是不是第一次出现 if (!map1.containsKey(aChar)) { //是第一次出现,将字符当做键 出现的次数1为值 存入Map集合中 map1.put(aChar, 1); } else { //不是第一次出现 通过get()方法得到当前字符出现的次数 (键对应的值) Integer integer = map1.get(aChar); integer++;//本次该字符又出现了一次,将值+1, map1.put(aChar, integer);//将得到的新的值和 键保存到集合中 } } } }//关闭资源 br.close(); Set<Character> characters = map1.keySet(); NumberFormat num = NumberFormat.getPercentInstance(); num.setMaximumIntegerDigits(3);// 设置整数位最大为3位数 num.setMaximumFractionDigits(2);// 设置小数位最多为两位数 for (Character character : characters) { long s= map1.get(character); //double t=s/total; System.out.println(character + "=" +num.format((float)(map1.get(character))/total) ); } } }