• 统计文本中出现的字母的百分比


    从文本中读取数据

    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;
        }
    }
  • 相关阅读:
    深入理解TCP协议及其源代码
    Socket与系统调用深度分析
    构建调试Linux内核网络代码的环境MenuOS系统
    创新产品的需求分析:未来的图书会是什么样子?
    socket通信的原理与实践
    案例分析:设计模式与代码的结构特性
    网络相关的命令工具研究报告:ssh
    业务领域建模Domain Modeling
    ubuntu 设置静态ip,但显示scope global secondary ens33
    解决Python查询Mysql中文乱码问题
  • 原文地址:https://www.cnblogs.com/janeszj/p/10809555.html
Copyright © 2020-2023  润新知