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

    part1:WordCount编程
    Github项目地址
    PSP表格
    解题思路描述
    代码规范制定链接
    设计与实现过程
    性能改进
    单元测试
    异常处理说明
    心路历程与收获

    这个作业属于哪个课程 <班级链接>
    这个作业要求在哪里 <作业要求的链接>
    这个作业的目标 学会使用Java导入文件读取文件并使用函数完成各种功能
    学号 20188410

    Github项目地址:

    https://github.com/94-clown/Project-Java

    PSP表格

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

    解题思路描述

    统计字符数:遍历
    空格的话就直接计算字符长度

    统计单词总数:
    利用空格来判断一个单词的结束,然后将所有的单词转换成大写或者小写再去统计,这里就用字母的ASCII表

    计算有效行数:
    使用正则表达式"s*"来判断是否为空行,维护一个统计空行变量lines,有效行数=文件行数-空行行数

    单词的出现次数:
    使用HashMap统计词频,全文处理结束后进行按要求排序,并输出Top10

    代码规范制定链接:

    设计与实现过程:

    import java.io.*;
    import java.util.Scanner;
    import java.util.Vector;
    
    public class test1 {
        public static void main(String[] args) throws IOException {
            // 获得文件整体数据
            Scanner in = new Scanner(new File("input.txt"));
            String vFileData = "";                                            // vFileData: 文件串;
            while (in.hasNextLine()) {
                String str = in.nextLine();
                vFileData += str + '
    ';
            }
            vFileData = vFileData.substring(0, vFileData.length() - 1);
            // 去除非ASCII字符 以及将所有英文字符小写化
            String editData = "";
            for (int i = 0; i < vFileData.length(); i++) {
                if (vFileData.charAt(i) >= 0 && vFileData.charAt(i) <= 127) {
                    editData += vFileData.charAt(i);
                }
            }
            editData = editData.toLowerCase();
            // System.out.println(editData);
    
            // ===
            Vector<String> Words = new Vector<String>();
            Vector<Integer> WordValue = new Vector<Integer>();
    
            String WordsString = "";
            int WordValueInt = 0;
    
            StringBuilder vsTemp = new StringBuilder();
    
            for (int i = 0; i < editData.length(); i++) {
                if (editData.charAt(i) >= 'a' && editData.charAt(i) <= 'z')
                    vsTemp.append(editData.charAt(i));
                else {
                    if (editData.charAt(i) >= '0' && editData.charAt(i) <= '9')
                        vsTemp.append(editData.charAt(i));
                    else {
                        if (vsTemp.length() >= 4 && IsWord(vsTemp.toString())) {
                            int flag = 0;
                            for (int j = 0; j < Words.size(); j++) {
                                if (vsTemp.toString().equals(Words.elementAt(j))) {
                                    WordValue.setElementAt(WordValue.elementAt(j) + 1, j);
    
                                    // System.out.println(WordValue.elementAt(j));
                                    // WordValue.set(WordValue.elementAt(j)+1);
                                    flag = 1;
                                    break;
                                }
                            }
    
                            if (flag == 0) {
                                Words.addElement(vsTemp.toString());
                                WordValue.addElement(1);
                            }
                            flag = 0;
                        }
                        vsTemp = new StringBuilder();
                    }
                }
            }
    
            // ===
    
            // 1. 统计字符数
            System.out.println("characters: " + editData.length());
    
            // 3. 有效行数
            String[] aa = editData.split("
    ");
    
            int RowsValue = 0;
            for (String s : aa) {
                if (!s.equals(""))
                    RowsValue++;
                // System.out.println(aa[i]);
            }
    
            System.out.println("lines: " + RowsValue);
    
            // 打印
            for (int i = 0; i < Words.size(); i++) {
                System.out.println(Words.elementAt(i) + " " + WordValue.elementAt(i));
    
            }
        }
    
        public static Boolean IsWord(String vTestWord) {
            for (int i = 0; i < 4; i++) {
                if (vTestWord.charAt(i) >= '0' && vTestWord.charAt(i) <= '9')
                    return false;
            }
            return true;
        }
    }
    
    

    心路历程:

    看了福州大学的代码,自己啥也不会,硬在何铭康的教导下写出来这么点简单功能的代码.觉得自己还有巨多的Java知识要学,还有很多的数据传输的关系要学.慢慢百度搜索一点点积累

  • 相关阅读:
    要学习的东西~!~
    Concrete5官网
    PHP免费源码下载
    PHP源码下载1
    PHP源码下载
    PHP框架之ThinkPHP项目CMS内容管理系统源码及开发手册视频
    SELINUX导致数据修改权限不成功
    mysql参数安全设置
    大话存储(1-5)
    存储知识(4)
  • 原文地址:https://www.cnblogs.com/94ha-xc/p/14610254.html
Copyright © 2011-2022 走看看