zoukankan      html  css  js  c++  java
  • 统计文本中出现的字母的百分比

    从文本中读取数据

    String fileName ="F:\javacx\wind.txt";
            FileReader fileReader = new FileReader(fileName);
    
            BufferedReader bufferedReader = new BufferedReader(fileReader);

    按行读取且取单个字符,调用 changeLowwer()函数,使其不区分大小写

    然后将获取的字符以及对应的百分比存入map集合中

    String line =bufferedReader.readLine();
            Map map=new HashMap();//保存数据出现的次数的集合
            for (int i = 0; i < line.length(); i++) //遍历测试数据
            {
                char a=changeLowwer(line.charAt(i));
                //取出单个字符,如果是大写的字母调用changelowwer()函数转换为小写字母
    
                if(isSingleWord(a))
                {
                    if(map.get(a)!=null)//如果这个字符已经存在
                    {
                        int num=Integer.parseInt(map.get(a).toString());
                        map.put(a,num+1);//数量加一次
                    }else
                    {
                        map.put(a,1);//如果这个字符不存在就为1
                    }
                }
            }

    用选择排序排列map集合中的key值,然后顺序输出。

    源码:

    package TJZM;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    public class tjzm {
    
        public static void main(String[] args) throws IOException {
    
            String fileName ="F:\javacx\wind.txt";
            FileReader fileReader = new FileReader(fileName);
    
            BufferedReader bufferedReader = new BufferedReader(fileReader);
    
            String line =bufferedReader.readLine();
            Map map=new HashMap();//保存数据出现的次数的集合
            for (int i = 0; i < line.length(); i++) //遍历测试数据
            {
                char a=changeLowwer(line.charAt(i));
                //取出单个字符,如果是大写的字母调用changelowwer()函数转换为小写字母
    
                if(isSingleWord(a))
                {
                    if(map.get(a)!=null)//如果这个字符已经存在
                    {
                        int num=Integer.parseInt(map.get(a).toString());
                        map.put(a,num+1);//数量加一次
                    }else
                    {
                        map.put(a,1);//如果这个字符不存在就为1
                    }
                }
            }
            Object[] aa=map.keySet().toArray();//取出集合所有的key
            int sum=0;
            int []wz=new int[aa.length];
            for(int i=0;i<aa.length;i++)//再遍历
            {
                
                sum=sum+(int)(map.get(aa[i]));
    //            System.out.println(aa[i]+"出现了"+map.get(aa[i])+"次");
            }
            for(int i=0;i<aa.length-1;i++)//再遍历
            {
                for(int j=i+1;j<aa.length;j++)
                {
                    if((int)map.get(aa[i])<(int)map.get(aa[j]))//选择排序
                    {
                        char temp=(char)aa[i];
                        aa[i]=aa[j];
                        aa[j]=temp;
                    }
                }
    
            }
            for(int i=0;i<aa.length;i++)//再遍历
            {
                
                System.out.println(aa[i]+"出现频率"+String.format("%6.2f%%", ((int)map.get(aa[i]))/(double)sum*100));
            }
            while (line!=null){
                //System.out.println(line);
                line = bufferedReader.readLine();
            }
    
            bufferedReader.close();
            fileReader.close();
    
        }
    
        static boolean isSingleWord(char a)//判断获取的字符是否是字母
        {
            if(a>='a'&&a<='z'||a>='A'&&a<='Z')
            {
                return true;
            }
            return false;
        }
    
        static char changeLowwer(char a)//转化大写字母为小写
        {
            if(a>='A'&&a<='Z')
            {
                return (char)(a-'A'+'a');
            }
            return a;
        }
    }
  • 相关阅读:
    理解js中的原型链,prototype与__proto__的关系
    Zepto源码(2016)——Zepto模块(核心模块)
    MySQL增删改查
    ACM典型试题--古代密码(二)
    ACM典型试题--简单的加密算法(一)
    MySQL图文安装配置
    (c语言)二叉树中序线索(数据结构十七)
    (C语言)二叉树层次遍历(数据结构十六)
    Java连接db2数据库(常用数据库连接五)
    java连接oracle数据库(常用数据库连接四)
  • 原文地址:https://www.cnblogs.com/janeszj/p/10809555.html
Copyright © 2011-2022 走看看