读取文件,计算字母出现次数和频率,按顺序打印

用BufferedReader类读取文件,数组记录次数,冒泡法排序,最后打印

 

package test01;

import java.io.*;
import java.util.*;
import java.text.DecimalFormat;

public class Zimu0 {

    public static void main(String[] args) throws IOException 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\piao.txt")));
        int[] count  = new int[52];
        char[] c = new char[1];
        int len = br.read(c);
        while(len!=-1) {
            if(c[0]<='Z'&&c[0]>='A') {
                int number = c[0];
                count[number-65]++;
            }
            else if(c[0]<='z'&&c[0]>='a') {
                int number = c[0];
                count[number-71]++;
            }
            len = br.read(c);
        }
        Print(count);
        br.close();
    }
    
    public static int add(int[] count)
    {
        int sum=0;
        for(int i=0;i<count.length;i++)
        {
            sum += count[i];
        }
        return sum;
    }
    
    public static void Print(int[] count) 
    {
        int sum=add(count);
        char [] b = new char[52];
        DecimalFormat df= new DecimalFormat("######0.00");
        
        for(int i=0;i<52;i++) {
            char abc;
            if(i<26){
                abc = (char)(i+65);
            }
            else {
                abc = (char)(i+71);
            }
            b[i]=abc;
        }
        
        for(int i=0;i<b.length-1;i++)
        {
            for(int j=0;j<b.length-i-1;j++)
            {
                if(count[j]<count[j+1])
                {
                    int t=count[j];
                    count[j]=count[j+1];
                    count[j+1]=t;
                    
                    char y=b[j];
                    b[j]=b[j+1];
                    b[j+1]=y;
                    
                }
            }
        }
        System.out.println("字母	次 数	占 比");
        for(int i=0;i<52;i++) {
            System.out.println(b[i]+":	"+count[i]+"	"+df.format((double)100*count[i]/sum)+"%");
        }
        
    }
    
}
原文地址:https://www.cnblogs.com/a8047/p/13923055.html