zoukankan      html  css  js  c++  java
  • 编程作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class2-2018/
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class2-2018/homework/11878
    这个作业的目标 学会使用Gitee
    作业正文 github初始用,编码规范
    其他参考文献 Java开发实战经典

    码云地址:https://gitee.com/tzmad/project-c

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 10 20
    • Estimate • 估计这个任务需要多少时间 1000 2000
    Development 开发 100 300
    • Analysis • 需求分析 (包括学习新技术) 60 120
    • Design Spec • 生成设计文档 20 30
    • Design Review • 设计复审 5 8
    • Coding Standard • 代码规范 (为目前的开发制定合适的规范) 4 8
    • Design • 具体设计 30 50
    • Coding • 具体编码 100 800
    • Code Review • 代码复审 5 10
    • Test • 测试(自我测试,修改代码,提交修改) 100 200
    Reporting 报告 20 40
    • Test Repor • 测试报告 15 25
    • Size Measurement • 计算工作量 10 30
    • Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 30 50
    合计 1479 3691

    解题思路:
    定义四个类来实现:(charsNum)统计文件的字符数,(wordsNum)统计文件的单词总数,(linesNum)统计文件的有效行数,( wordsMap)统计文件中各单词的出现次数。
    用split()方法来分割单词,并通过正则表达式将内容分成单词数组并检验单词的合法性,调用map函数来实现单词频率的计算。

    代码规范的链接:https://gitee.com/tzmad/project-java/blob/master/20188446/codestyle.md

    定义charsnum,wordsnum,linesnum,wordsmap四个类来分别实现题目要求的四个功能块。
    private int charsNum;/字符数/
    private int wordsNum;/单词总数/
    private int linesNum;/有效行数/
    private Map<String, Integer> wordsMap;/存放单词与次数/

    统计频率最高的10个单词数:用for语句判断是否已经有10个频率最高的单词,没有就加1。
    for(Map.Entry<String, Integer> map : topWords){/统计频率最高的10个单词/
    if (top < 10){
    writer.write(map.getKey() + ": " + map.getValue() + " ");
    top++;
    }

    统计单词总数:使用split来分割字符串,用正则表达式来判断单词是否符合题目要求。
    public void countWordsNum(){/统计单词总数/
    wordsNum = 0;
    wordsMap = new HashMap<String,Integer>();
    String word;
    Integer num;
    String[] words = content.split("[^a-zA-Z0-9]+");
    for (int i = 0; i < words.length; i++){
    if (words[i].matches("[a-zA-Z]{4,}[a-zA-Z0-9]*")) {
    wordsNum++;
    word = words[i].toLowerCase();
    if (wordsMap.containsKey(word)){
    num = wordsMap.get(word);
    num++;
    wordsMap.put(word, num);
    }
    else {
    wordsMap.put(word, 1);
    }
    }
    }
    }
    代码测试截图:



    心路历程与收获:
    这次作业让我学会了如何使用码云的一些功能,养成了如何去写一个工程的习惯,复习了以前学习的Java的知识点,还知道了map函数的使用方法,也知道了遇到难题如何去请教别人以及怎样解决这个难题的,其次还知道了完成一个项目是需要很多人团结协作的,而不是一个人单打独斗逞英雄的时候,一起交流能够更快的完成制定的目标。

  • 相关阅读:
    019_linuxC++之_函数模板引入
    018_linuxC++之_抽象类的引入
    017_linuxC++之_多态的引入
    《将博客搬至CSDN》
    016_linuxC++之_多重继承
    013_linuxC++之_派生类中权限的调整
    015_linuxC++之_覆写
    014_linuxC++之_不同类型的继承
    012_linuxC++之_类的继承定义
    011_linuxC++之_继承的引入
  • 原文地址:https://www.cnblogs.com/tzmad/p/14606967.html
Copyright © 2011-2022 走看看