• 统计txt文档中的单词个数


    public class Bean {
    
        private char name;
        private double pinlv;
        public Bean(char name,double pl) {
            this.name=name;
            this.pinlv=pl;
        }
        public char getName() {
            return name;
        }
        public void setName(char name) {
            this.name = name;
        }
        public double getPinlv() {
            return pinlv;
        }
        public void setPinlv(double pinlv) {
            this.pinlv = pinlv;
        }
    
        
            
        }
    import java.awt.List;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.text.DecimalFormat;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.w3c.dom.ls.LSInput;
        public class zero {
        static int sum=0;
        private static DecimalFormat decimalFormat;
    
    
            public static void main(String[] args) throws Exception{
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:\eclipse\统计txt文档中的单词个数\src\统计txt文档中的单词个数\c.txt")));
                int[] count  = new int[26];
                int[] COUNT  = new int[26];
                decimalFormat = new DecimalFormat(".00");
                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]++;
                    }
                    if(c[0]<='z'&&c[0]>='a') {
                        int number = c[0];
                        count[number-97]++;
                    }
                    len = br.read(c);
                }
                Sum(count, COUNT);
                Print(count, COUNT);
                
                
                
                System.out.print("
    c.txt文件读取完毕!");
                br.close();
                char[] c1=new char[52];
                double []b=new double[52];
                for(int x=0;x<print_doublelist(count).length;x++) {
                    b[x]=print_doublelist(count)[x];
                }
                for(int y=0;y<print_doublelist2(COUNT).length;y++) {
                    b[y+print_doublelist(count).length]=print_doublelist2(COUNT)[y];
                }
                for(int i=0;i<52;i++) {
                    if(i<26)
                    c1[i]=(char)(i+97);
                    else
                        c[i]=(char)(i+26);
                }
                
                Map<Character, Double> map = new HashMap<Character, Double>();
                ArrayList<Map.Entry<Character, Double>> list = new ArrayList<>();
                
                for(int i=0;i<52;i++) {
                    map.put(c1[i], b[i]);                
                }
                for(Map.Entry<Character, Double> entry : map.entrySet()){
                    
                    list.add(entry);
                    
                }
                 list.sort(new Comparator<Map.Entry<Character, Double>>(){
                     @Override
                     public int compare(Map.Entry<Character, Double> o1, Map.Entry<Character, Double> o2) {
                         return (int) (o2.getValue()-o1.getValue());} 
                 });
                    
                 for(Map.Entry<Character, Double> entry: list){
                     System.out.println(entry);
                }}
            
            
            public static void Print(int[] count,int[] COUNT) {
                for(int i=0;i<26;i++) {
                    if(count[i]>0) {
                        char lowerCase = (char)(i+97);
                        System.out.println(lowerCase+"的频率为:"+decimalFormat.format((float)count[i]/sum));
                    }
                    if(COUNT[i]>0) {
                        char upperCase = (char)(i+65);
                        System.out.println(upperCase+"的频率为:"+decimalFormat.format((float)COUNT[i]/sum));
                    } 
                }
                
            }
            
            
            public static void Sum(int[] count,int[] COUNT ) {
                
                for(int i=0;i<26;i++) {
                    sum+=count[i]+COUNT[i];
                }
                System.out.println("和为"+sum);
            }
          public static double[] print_doublelist(int[] count) {
              double a[]=new double[26];
              for(int i=0;i<26;i++) {
                  a[i]=count[i]/sum;
              }
              return a;
          }
          
          public static double[] print_doublelist2(int[] COUNT) {
              double a[]=new double[26];
              for(int i=0;i<26;i++) {
                  a[i]=COUNT[i]/sum;
              }
              return a;
          }
        }
  • 相关阅读:
    《梦断代码》读书笔记(二)
    周总结(十三)
    周总结(十)
    知识圈APP开发记录(十六)
    《梦断代码》读书笔记(一)
    知识圈APP开发记录(十五)
    朴素贝叶斯
    单源最短路径 djkstra
    有向图 拓扑排序 文件依赖下的编译顺序该如何确定?
    《人类简史》读后感
  • 原文地址:https://www.cnblogs.com/zhang188660586/p/11062018.html
Copyright © 2020-2023  润新知