源代码:
package text; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; public class TongJiDanCi { public static void main(String[] args)throws IOException//扔掉很重要 { File file = new File("D:/yingwen.txt"); txtString(file); } public static void txtString(File file) throws IOException{ try { //IO操作读取文件内容 FileReader fr = new FileReader(file); @SuppressWarnings("resource") BufferedReader br = new BufferedReader(fr);//构造一个BufferedReader类来读取文件 HashMap<String, Integer> hm = new HashMap<String, Integer>();//构建了一个新的HashMap对象,强制指定这个HashMap必须是以String为key, 以Integer为值。 String line =null; Integer count = 0;//每个字母的个数 Integer total = 0;//统计字母总数,作百分比用 while ((line=br.readLine())!=null) { char[] ch = line.toCharArray();//将字符串对象中的字符转换为一个字符数组。 total = total + ch.length; for (int i = 0; i < ch.length; i++) { ch[i] = Character.toLowerCase(ch[i]);//将大写字符转换为小写,小写字母不变 count = hm.get(ch[i]+"");//ch[i]+""的作用是加一个空格后,括号内转化为字符串 if (count == null) { count =1;//只出现一次 }else { count++; } hm.put(ch[i]+"", count); } } for (String str : hm.keySet()) {//设变量str获取键 System.out.println(str+"个数:"+hm.get(str)+" "+hm.get(str)*100.0/total+"%"); } System.out.println("总字母个数:"+total); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
运行结果: