【作业】飘-字母统计
突发奇想 利用ASCII的值的连续性,直接对应数组0-25序号
1 package piao; 2 3 import java.io.FileReader; 4 import java.util.Scanner; 5 6 public class piao { 7 8 public static void main(String[] args) 9 { 10 double []list=new double[26]; 11 int []c=new int[26]; 12 for(int k=0;k<26;k++) 13 { 14 list[k]=0; 15 } 16 for(int k=0;k<26;k++) 17 { 18 c[k]=k+65; 19 } 20 String line=""; 21 int a=0; 22 int b=0; 23 int s=0; 24 try 25 { 26 FileReader fr=new FileReader("piao.txt"); 27 Scanner in =new Scanner(fr); 28 while(in.hasNext()) 29 { 30 line=in.nextLine(); 31 //System.out.println(line); 32 for(int i=0;i<line.length();i++) 33 { 34 a=line.charAt(i); 35 36 if (a>=65&&a<=90) 37 { 38 b=a-65; 39 } 40 if(a>=97&&a<=122) 41 { 42 b=a-97; 43 } 44 //System.out.println(b); 45 list[b]+=1; 46 s++; 47 } 48 } 49 50 for(int t=0;t<26;t++) 51 { 52 list[t]=list[t]/s; 53 54 //System.out.println(list[t]); 55 } 56 int t,k; 57 double d; 58 int e; 59 for(t=0;t<25;t++) 60 { 61 for(k=0;k<25-t;k++) 62 { 63 if(list[k]<list[k+1]) 64 { 65 d=list[k+1]; 66 list[k+1]=list[k]; 67 list[k]=d; 68 69 e=c[k+1]; 70 c[k+1]=c[k]; 71 c[k]=e; 72 } 73 } 74 } 75 76 for(t=0;t<26;t++) 77 { 78 System.out.print((char)(c[t])+" "); 79 System.out.println(String.format("%.2f", list[t]*100)+"%"); 80 } 81 } 82 catch(Exception e) 83 { 84 85 } 86 } 87 88 }