package test; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class ReadIO { public static void main(String[] args) { int[] b= new int[52]; char[] c= new char[52]; String s1= null; File file = new File("C:\\Users\\lenovo\\Desktop\\Harry Potter and the Sorcerer's Stone.txt"); try { FileReader r = new FileReader(file); BufferedReader br = new BufferedReader(r); String s; while((s=br.readLine())!=null){ s1=s; for(int i=0;i<s1.length();i++) { switch(s1.charAt(i)) { case 'a':c[0]='a'; b[0]++;break; case 'b':c[1]='b';b[1]++;break; case 'c':c[2]='c';b[2]++;break; case 'd':c[3]='d';b[3]++;break; case 'e':c[4]='e';b[4]++;break; case 'f':c[5]='f';b[5]++;break; case 'g':c[6]='g';b[6]++;break; case 'h':c[7]='h';b[7]++;break; case 'i':c[8]='i';b[8]++;break; case 'j':c[9]='j';b[9]++;break; case 'k':c[10]='k';b[10]++;break; case 'l':c[11]='l';b[11]++;break; case 'm':c[12]='m';b[12]++;break; case 'n':c[13]='n';b[13]++;break; case 'o':c[14]='o';b[14]++;break; case 'p':c[15]='p';b[15]++;break; case 'q':c[16]='q';b[16]++;break; case 'r':c[17]='r';b[17]++;break; case 's':c[18]='s';b[18]++;break; case 't':c[19]='t';b[19]++;break; case 'u':c[20]='u';b[20]++;break; case 'v':c[21]='v';b[21]++;break; case 'w':c[22]='w';b[22]++;break; case 'x':c[23]='x';b[23]++;break; case 'y':c[24]='y';b[24]++;break; case 'z':c[25]='z';b[25]++;break; case 'A':c[26]='A';b[26]++;break; case 'B':c[27]='B';b[27]++;break; case 'C':c[28]='C';b[28]++;break; case 'D':c[29]='D';b[29]++;break; case 'E':c[30]='E';b[30]++;break; case 'F':c[31]='F';b[31]++;break; case 'G':c[32]='G';b[32]++;break; case 'H':c[33]='H';b[33]++;break; case 'I':c[34]='I';b[34]++;break; case 'J':c[35]='J';b[35]++;break; case 'K':c[36]='K';b[36]++;break; case 'L':c[37]='L';b[37]++;break; case 'M':c[38]='M';b[38]++;break; case 'N':c[39]='N';b[39]++;break; case 'O':c[40]='O';b[40]++;break; case 'P':c[41]='P';b[41]++;break; case 'Q':c[42]='Q';b[42]++;break; case 'R':c[43]='R';b[43]++;break; case 'S':c[44]='S';b[44]++;break; case 'T':c[45]='T';b[45]++;break; case 'U':c[46]='U';b[46]++;break; case 'V':c[47]='V';b[47]++;break; case 'W':c[48]='W';b[48]++;break; case 'X':c[49]='X';b[49]++;break; case 'Y':c[50]='Y';b[50]++;break; case 'Z':c[51]='Z';b[51]++;break; } } } }catch(IOException e) { e.printStackTrace(); } for(int i=0;i<52;i++) { for(int j=i+1;j<52;j++) { if(b[i]<b[j]) { char c1=c[i]; int t=b[i]; b[i]=b[j]; c[i]=c[j]; b[j]=t; c[j]=c1; } } } int sum= 0; for(int i=0;i<52;i++) { sum=b[i]+sum; } for(int i=0;i<52;i++) { System.out.printf(c[i]+"的个数为:"+b[i]+",占"); System.out.printf("%.2f\n",b[i]*1.0/sum*100); } } }
实验截图:
判断语句我用的最笨的方法,用的switch语句来判断字母的出现个数,这种方法效率有点低。