Java05文件与流-——课堂测试1

要求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虽然简单但是文件方面没有学太好所以写起来还是有难度

posted @ 2020-11-04 22:40  居酿圆子  阅读(88)  评论(0编辑  收藏  举报