
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) );
}
}
}
