统计字符出现频率(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();
		}
		
	}

}

 

猜你喜欢

转载自www.cnblogs.com/w669399221/p/12152130.html