zoukankan      html  css  js  c++  java
  • wordcount编程

    wordcount编程

    https://github.com/hyanju/Project-Java

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/homework/11880
    这个作业的目标 规范了写一个项目的流程
    作业正文 https://www.cnblogs.com/H-Alice/p/14596105.html
    其他参考文献 Java菜鸟教程

    psp表格

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

    解题思路

    字符统计思路:通过Ascii码值来限定字符
    单词统计思路:通过分隔符进行分割,之后再通过正则表达式来筛选正确单词
    行数统计思路:统计回车数
    单词频率统计思路:HashMap存储键值对

    代码规范链接

    https://github.com/hyanju/Project-Java/blob/main/codestyle.md

    设计与实现过程

    一共有四个类,每个类中写有一个方法

    核心代码
    字符统计

    while ((read = buff.read()) != -1) { 
            	if(read>=32&&read<=126) {   //统计字符数
            		charCount++;
            	}
            }
    

    行数统计

             while (value != null) {
            	if(!"".equals(value)) {
            	   i++;
            	}
                value=in.readLine();
            }
            if (in!= null)
    			in.close();
    

    单词统计(字符串分割+正则表达式+大写字母转小写)

    //字符串分割
    String[] str1 = str.split("\s+");
    
    // 按指定模式在字符串查找
    String pattern = "^[a-zA-Z]{4}[a-zA-Z0-9]*$";
    String pattern1 = "[a-zA-Z]{4}$";
    
    //判断是否为小写字母
    if(Character.isUpperCase(c)) {
        sb.append(Character.toLowerCase(c));
    }else {
        sb.append(Character.toLowerCase(c));
     }
    

    单词频率显示

    m=0;
    ArrayList<String> list1 =new ArrayList<>();
    ArrayList<String> list2 =new ArrayList<>();
    max=num[0];
    while(m<num.length) {
        while(m<num.length) {
        if(max==num[m]) {
            list1.add(str2[m]);
            m++;
        }else {
            max=num[m];
            break;
        }
    }
    //list1.sort(Comparator.);
    Collections.sort(list1);
    list2.addAll(list1);
    list1.clear();
     }
    

    运行截图

    性能改进

    暂无

    单元测试

    通过在终端输出来测试的

    System.out.println();
    

    异常处理说明

    系统找不到文件

    心路历程及收获

    心路历程:做起来感觉很繁琐
    收获:对于开发流程有一定了解了

  • 相关阅读:
    windows版本nginx帮助文档
    angular渲染超链接bug
    ionic踩过的一些坑
    ionic项目中使用自定义图标打包出现错误-broken import
    ionic项目中使用自定义图标
    ionic3运行时gradle下载失败的解决方法
    阿里云菜鸡上云实例
    如何用手机控制pc鼠标——Java开发与学习记实
    LeetCode刷题笔记---6月
    编译原理复习题
  • 原文地址:https://www.cnblogs.com/H-Alice/p/14596105.html
Copyright © 2011-2022 走看看