zoukankan      html  css  js  c++  java
  • 课堂测试1

             输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。

             字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数)

             如果两个字母出现的频率一样,那么就按照字典序排列。

            

    package Statistics;
    import java.io.File;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    public class FileOutput {
        private static  int[][] letter=new int[2][52];
        public static void main(String[] args) throws IOException {
            StringBuilder sb = new StringBuilder();
            File directory = new File("");//参数为空 
            String courseFile = directory.getCanonicalPath()+"/Harry Potter and the Sorcerer's Stone.txt"; 
            BufferedReader bf = new BufferedReader(new FileReader(courseFile));
            String content = null;
            while((content = bf.readLine()) != null){
                sb.append(content.trim());
            }
            for(int j=0;j<52;j++)
            {
                letter[0][j]=j;
                letter[1][j]=0;
            }    
            countCracts(sb.toString(), 'a', 'z');
            countCracts(sb.toString(), 'A', 'Z');
            for(int i=0;i<52;i++)
            {
                int max=letter[1][i],idmax=i;
                for(int j=i+1;j<52;j++)
                {
                    if(max<letter[1][j])
                    {
                        max=letter[1][j];
                        idmax=j;
                    }
                }
                int k,t;
                k=letter[1][i];
                letter[1][i]=letter[1][idmax];
                letter[1][idmax]=k;
                t=letter[0][i];
                letter[0][i]=letter[0][idmax];
                letter[0][idmax]=t;
            }
            double m=0;
            for(int i=0;i<52;i++)
            {
                m+=letter[1][i];
            }
            for(int i=0;i<52;i++)
            {
                switch(letter[0][i])
                {
                case 0:System.out.print("A:");break;
                case 1:System.out.print("B:");break;
                case 2:System.out.print("C:");break;
                case 3:System.out.print("D:");break;
                case 4:System.out.print("E:");break;
                case 5:System.out.print("F:");break;
                case 6:System.out.print("G:");break;
                case 7:System.out.print("H:");break;
                case 8:System.out.print("I:");break;
                case 9:System.out.print("J:");break;
                case 10:System.out.print("K:");break;
                case 11:System.out.print("L:");break;
                case 12:System.out.print("M:");break;
                case 13:System.out.print("N:");break;
                case 14:System.out.print("O:");break;
                case 15:System.out.print("P:");break;
                case 16:System.out.print("Q:");break;
                case 17:System.out.print("R:");break;
                case 18:System.out.print("S:");break;
                case 19:System.out.print("T:");break;
                case 20:System.out.print("U:");break;
                case 21:System.out.print("V:");break;
                case 22:System.out.print("W:");break;
                case 23:System.out.print("X:");break;
                case 24:System.out.print("Y:");break;
                case 25:System.out.print("Z:");break;
                case 26:System.out.print("a:");break;
                case 27:System.out.print("b:");break;
                case 28:System.out.print("c:");break;
                case 29:System.out.print("d:");break;
                case 30:System.out.print("e:");break;
                case 31:System.out.print("f:");break;
                case 32:System.out.print("g:");break;
                case 33:System.out.print("h:");break;
                case 34:System.out.print("i:");break;
                case 35:System.out.print("j:");break;
                case 36:System.out.print("k:");break;
                case 37:System.out.print("l:");break;
                case 38:System.out.print("m:");break;
                case 39:System.out.print("n:");break;
                case 40:System.out.print("o:");break;
                case 41:System.out.print("p:");break;
                case 42:System.out.print("q:");break;
                case 43:System.out.print("r:");break;
                case 44:System.out.print("s:");break;
                case 45:System.out.print("t:");break;
                case 46:System.out.print("u:");break;
                case 47:System.out.print("v:");break;
                case 48:System.out.print("w:");break;
                case 49:System.out.print("x:");break;
                case 50:System.out.print("y:");break;
                case 51:System.out.print("z:");break;
                }
                System.out.println(String.format("%.2f",(double)(letter[1][i]/m*100))+"%");
            }
        }
        private static void countCracts(String str, char start, char end) {
            for(char a = start; a <= end; a++){
                int cractCount = str.length() - str.replaceAll(String.valueOf(a), "").length();
                if(a>='A'&&a<='Z')
                {
                    int m=(int)(a-'A'+1);
                    switch(m)
                    {
                    case 1:letter[1][0]=cractCount;break;
                    case 2:letter[1][1]=cractCount;break;
                    case 3:letter[1][2]=cractCount;break;
                    case 4:letter[1][3]=cractCount;break;
                    case 5:letter[1][4]=cractCount;break;
                    case 6:letter[1][5]=cractCount;break;
                    case 7:letter[1][6]=cractCount;break;
                    case 8:letter[1][7]=cractCount;break;
                    case 9:letter[1][8]=cractCount;break;
                    case 10:letter[1][9]=cractCount;break;
                    case 11:letter[1][10]=cractCount;break;
                    case 12:letter[1][11]=cractCount;break;
                    case 13:letter[1][12]=cractCount;break;
                    case 14:letter[1][13]=cractCount;break;
                    case 15:letter[1][14]=cractCount;break;
                    case 16:letter[1][15]=cractCount;break;
                    case 17:letter[1][16]=cractCount;break;
                    case 18:letter[1][17]=cractCount;break;
                    case 19:letter[1][18]=cractCount;break;
                    case 20:letter[1][19]=cractCount;break;
                    case 21:letter[1][20]=cractCount;break;
                    case 22:letter[1][21]=cractCount;break;
                    case 23:letter[1][22]=cractCount;break;
                    case 24:letter[1][23]=cractCount;break;
                    case 25:letter[1][24]=cractCount;break;
                    case 26:letter[1][25]=cractCount;break;
                    }
                }
                if(a>='a'&&a<='z')
                {
                    int m=(int)(a-'a'+1);
                    switch(m)
                    {
                    case 1:letter[1][26]=cractCount;break;
                    case 2:letter[1][27]=cractCount;break;
                    case 3:letter[1][28]=cractCount;break;
                    case 4:letter[1][29]=cractCount;break;
                    case 5:letter[1][30]=cractCount;break;
                    case 6:letter[1][31]=cractCount;break;
                    case 7:letter[1][32]=cractCount;break;
                    case 8:letter[1][33]=cractCount;break;
                    case 9:letter[1][34]=cractCount;break;
                    case 10:letter[1][35]=cractCount;break;
                    case 11:letter[1][36]=cractCount;break;
                    case 12:letter[1][37]=cractCount;break;
                    case 13:letter[1][38]=cractCount;break;
                    case 14:letter[1][39]=cractCount;break;
                    case 15:letter[1][40]=cractCount;break;
                    case 16:letter[1][41]=cractCount;break;
                    case 17:letter[1][42]=cractCount;break;
                    case 18:letter[1][43]=cractCount;break;
                    case 19:letter[1][44]=cractCount;break;
                    case 20:letter[1][45]=cractCount;break;
                    case 21:letter[1][46]=cractCount;break;
                    case 22:letter[1][47]=cractCount;break;
                    case 23:letter[1][48]=cractCount;break;
                    case 24:letter[1][49]=cractCount;break;
                    case 25:letter[1][50]=cractCount;break;
                    case 26:letter[1][51]=cractCount;break;
                    }
                }
            }
        }
        
    }

  • 相关阅读:
    黑马程序员系列第十篇 异常
    黑马程序员系列第八篇 IO(2)
    黑马程序员系列第九篇 类加载器
    黑马程序员系列第六篇 面向对象基础
    黑马程序员系列第七篇 IO(1)
    黑马程序员系列第五篇 集合(2)
    黑马程序员系列第四篇 集合(1)
    黑马程序员系列第三篇 反射
    vue 自定义指令集合
    计算图片缩放比例 使图片不变形
  • 原文地址:https://www.cnblogs.com/zql-42/p/11806183.html
Copyright © 2011-2022 走看看