统计字符出现频率(java)
Posted 海南之风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计字符出现频率(java)相关的知识,希望对你有一定的参考价值。
package three; /*本程序目的是统计文件里的字符出现的频率。*/ import java.io.*; class word{ int num; String word; public word() { num=0; word=""; } } public class treat { public static void main(String args[]) { String s; String arr[]=new String[500000]; int temp[]=new int[500000]; int num1[]=new int[500000];//1 int num2[]=new int[500000]; String deg[]=new String[500000]; int char1=0,sum=0; int num=0;//总数 int asp[]=new int[100]; char zimu[]=new char[100]; try { BufferedReader br=new BufferedReader(new FileReader("F:/新建文件夹/1/harry.txt")); try { arr[char1]=new String(); while((s=br.readLine())!=null) { for(int i=0;i<s.length();i++) { if(s.charAt(i)>=65&&s.charAt(i)<=90) { num++; asp[(int)s.charAt(i)-65]++; } if(s.charAt(i)>=97&&s.charAt(i)<=122) { num++; asp[(int)s.charAt(i)-97+26]++; } } for(int i=0;i<s.length();i++) { if(s.charAt(i)==\' \'&&s.charAt(i+1)==\' \') continue; if(s.charAt(i)!=\' \'&&s.charAt(i)!=\'\\n\'&&s.charAt(i)!=\',\'&&s.charAt(i)!=\'.\'&&s.charAt(i)!=\'!\'&&s.charAt(i)!=\'?\'&&s.charAt(i)!=\'"\') { arr[char1]+=s.charAt(i); continue; } if(s.charAt(i)==\' \'&&s.charAt(i+1)!=\' \'&&s.charAt(i+1)!=\'\\n\'&&s.charAt(i+1)!=\',\'&&s.charAt(i+1)!=\'.\'&&s.charAt(i+1)!=\'!\'&&s.charAt(i+1)!=\'?\'&&s.charAt(i+1)!=\'"\') { continue; } else { char1++; arr[char1]=new String(); } } } for(int i=0;i<52;i++) { if(i<=26) zimu[i]=(char)(65+i); if(i>=26) { zimu[i]=(char)(97+i-26); } } //排序 for(int i=0;i<52;i++) { for(int j=i+1;j<52;j++) if(asp[i]<asp[j]) { int ps=0; ps=asp[i]; asp[i]=asp[j]; asp[j]=ps; char pr=\'x\'; pr=zimu[i]; zimu[i]=zimu[j]; zimu[j]=pr; } } for(int i=0;i<52;i++) { System.out.println(zimu[i]+"频率:"+String.format("%.2f", (double)asp[i]/num*100)+"%"); } /*for(int i=0;i<char1;i++) { System.out.println(arr[i]); } for(int i=0;i<char1;i++) { if(num1[i]!=1) { temp[i]=1; for(int j=i+1;j<char1;j++) { if(num1[j]!=1) { if(arr[i].equals(arr[j])) { num1[j]=1; temp[i]+=1; } } } } } for(int i=0;i<char1;i++) { if(num1[i]==1) continue; else { deg[sum]=new String(arr[i]); num2[sum]=temp[i]; sum++; } }*/ /*for(int i=0;i<char1;i++) { System.out.println(num1[i]+" "+temp[i]+" "+deg[i]+" "+num2[i]); } /*for(int i=0;i<sum;i++) { for(int j=i+1;j<sum;j++) { if(num2[i]<num2[j]) { int pw=0; pw=num2[i]; num2[i]=num2[j]; num2[j]=pw; String as=""; as=deg[i]; deg[i]=deg[j]; deg[j]=as; } } }*/ /*for(int i=0;i<sum;i++) { System.out.println("vocabulary: "+deg[i]+"出现次数:"+num2[i]); }*/ } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } }
以上是关于统计字符出现频率(java)的主要内容,如果未能解决你的问题,请参考以下文章