zoukankan      html  css  js  c++  java
  • 第二次编程

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/homework/11880
    这个作业的目标 完成项目
    学号 20188537
    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 50 70
    • Estimate • 估计这个任务需要多少时间 240 360
    Development 开发 100 110
    • Analysis • 需求分析 (包括学习新技术) 30 30
    • Design Spec • 生成设计文档 20 25
    • Design Review • 设计复审 10 10
    • Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 35
    • Design • 具体设计 80 100
    • Coding • 具体编码 180 200
    • Code Review • 代码复审 50 60
    • Test • 测试(自我测试,修改代码,提交修改) 20 20
    Reporting 报告 50 50
    • Test Repor • 测试报告 20 20
    • Size Measurement • 计算工作量 30 30
    • Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 10 10
    合计 920 1210

    项目链接:
    https://gitee.com/shihao0701/project-c

    解题思路:
    1、统计文件的字符数
    通过FileReader按字符读取文件,并且过滤非ASCII码字符。
    2.统计文件单词总数,这里注意到“空格,非字母数字符号为分隔符”,故只需要遍历一遍文件,将其分割符统一设为空格,然后再调用java的字符串的split函数即可,注意还需要写一个函数判断单词的合法性
    3.统计总的字符数,直接调用BufferedReader中的readline()方法,对每一行的字符数进行累加,最后加上行数就是文本中总的字符数。

    计算模块接口的设计与实现过程

    1.读取文件数据

    
     public static String charactersCount(String filePath)
        {
    
            BufferedReader bReader=null;
            StringBuilder str=null;
    
            try 
            {
                FileReader reader=new FileReader(filePath);
                bReader=new BufferedReader(reader);
                str=new StringBuilder();
                int flag;
                //str.append(bufferedReader.read());
                while ((flag=bReader.read())!=-1)
                {
                    str.append((char)flag);
                }
            } catch (FileNotFoundException e) 
            {
                e.printStackTrace();
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }finally 
            {
                try 
                {
                    bReader.close();
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
    
            return str.toString();
        }
    
    

    2.字符数统计

    
    
    //字符数总数统计
        public static int charactersNumberCount(String str)
        {
    
        	//将字符串改为字符
            char[] ch = str.toCharArray();
            int num = 0;
            for(int i = 0; i < ch.length; i++) {
                if(ch[i] >= 0 && ch[i] <= 127) {
                    num++;
                }
            }
            
            return num;
        }
    

    3.按照单词出现频数进行排序

    
    
    //按单词频率进行排序
        public List<Map.Entry<String,Integer>> SortMap()
        {
    
            List<Map.Entry<String,Integer>> wordList=new ArrayList<Map.Entry<String, Integer>>(wordsMap.entrySet());
    
            Collections.sort(wordList, new Comparator<Map.Entry<String, Integer>>() 
            {
            	
            	//利用匿名内部类实现排序
                @Override
                public int compare(Map.Entry<String, Integer> map1, Map.Entry<String, Integer> map2) 
                {
                    if (map1.getValue().equals(map2.getValue()))
                    {
                        return map1.getKey().compareTo(map2.getKey());
                    }
                    else 
                    {
                        return map2.getValue()-map1.getValue();
                    }
                }
            	
            });
    
            return wordList;
        }
    

    输出结果:

    心路历程与收获:学会了使用github上传自己的代码,初步编写了自己的代码规范和使用文档

  • 相关阅读:
    Jedis客户端以及redis中的pipeline批量操作
    Redis5.x两种持久化方式以及主从复制配置
    博客园原创文章防剽窃、反爬虫指南(持续更新.....)
    【金主打赏榜】
    Swift LeetCode 目录 | Catalog(每周日更新......)
    [Swift]SkeletonView:在UITableView中使用骨架屏
    【Xcode】加快Xcode编译调试速度
    【Xcode】ITMS-90809:查找UIWebView
    [Swift]PhotoKit-照片框架
    [SourceTree]remote: HTTP Basic: Access denied
  • 原文地址:https://www.cnblogs.com/shihao0701/p/14612958.html
Copyright © 2011-2022 走看看