要求1:
输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。
字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数)
如果两个字母出现的频率一样,那么就按照字典序排列。
package Count1; import java.io.FileReader; import java.io.IOException; import java.text.DecimalFormat; import java.io.BufferedReader; public class Count_fly { public static void main(String[] args) throws IOException{ FileReader fr=new FileReader("F://FLY.txt"); BufferedReader br=new BufferedReader(fr); DecimalFormat fnum=new DecimalFormat("0.00"); int f=0; int[] number=new int[52]; double[] rate=new double[52]; StringBuffer sb=new StringBuffer(); String s=null; while((s=br.readLine())!=null) { sb.append(s); } br.close(); fr.close(); for(int i=0;i<sb.length();i++) { char ch=sb.charAt(i); if(ch!=' '&&ch!='\n'&&ch!='\t') { f++; } int m=ch; if(ch<='Z'&&ch>='A') { number[m-65]++; } if(ch<='z'&&ch>='a') { number[m-71]++; } } System.out.println(f); for(int j=0;j<52;j++) { rate[j]=number[j]*100/(double)f; } for(char m=65,i=0;m<=90&&i<26;i++,m++) { System.out.println(m+":"+fnum.format(rate[i])+"%"); } for(char m=97,i=26;m<=122&&i<52;i++,m++) { System.out.println(m+":"+fnum.format(rate[i])+"%"); } } }
课堂测试1虽然简单但是文件方面没有学太好所以写起来还是有难度