个人作业2——WordCount

一、码云地址

https://gitee.com/fyxjm/PersonalProject-Java/tree/master

二、个人PSP表格

PSP2.1 个人开发流程 预估耗费时间(分钟) 实际耗费时间(分钟)
Planning 计划 30 60
· Estimate 明确需求和其他相关因素,估计每个阶段的时间成本 30 50
Development 开发 300 600
· Analysis 需求分析 (包括学习新技术) 60 120
· Design Spec 生成设计文档 60 120
· Design Review 设计复审 30 60
· Coding Standard 代码规范 30 60
· Design 具体设计 60 120
· Coding 具体编码 200 300
· Code Review 代码复审 30 35
· Test 测试(自我测试,修改代码,提交修改) 0 0
Reporting 报告 70 100
· 测试报告 0 0
· 计算工作量 30 35
· 并提出过程改进计划 0 0

三、解题思路描述

1、选择编程语言

  • Java语言
    2对于题目的理解与知识点的使用
  • 本题的思想是想用文本文件来进行统计
  • 第二就是对各种字符的统计,不管大小写、单词都要进行统计,然后输出,这里用到的知识点就是对字符串的判断
  • 题目想要分类输出,当然这里必须要把单词,行数等分开来统计,即分类统计
    3、开始设计和编码
  • 进行类的划分
  • 进行编码
    4、遇到问题的解决方法
  • 上网找资料解答疑惑,还有就是问同学,不过还是觉得问同学比较来得快

四、设计实现过程

划分的类

  • WordCount类,用来存放所统计字符数、单词数等方法
    包含的方法有:WordC方法。
  • File类,用来对文件的处理,读取和写入
    包含的方法有:File_read方法
  • Main类,调用类,实现代码的功能

五、代码说明

1、WordC()方法,用来用于统计字符的数量

public class WordC{
    
	private int wordnumber=0;
	private int charnumber=0;
	private int line=0;
	String text;
	public WordC(String text) {
		this.text = text;
	}
	public int getWordnumber() {
		String str=text;
		String[] words=str.split("\\s*[^0-9a-zA-Z]+");
		for(String s:words) {
			if(s.matches("[a-zA-Z]{4,}[a-zA-Z0-9]*")) {
				wordnumber++;
			}
		}
		return wordnumber;
	}
	public int getCharnumber() {
		for(int i=0;i<text.length();i++) {
			char c=text.charAt(i);
			if(c > 31 && c < 127 ||c == 10) {
				charnumber++;
			}
		}
		return charnumber;
	}
	public int getLine() {
		String[] lines=text.split("\r\n");
		for(int i=0;i<lines.length;i++) {
			if(lines[i].trim().length()!=0) {
			    line++;
			}
		}
		return line;
	}
}

2、File_read()方法,用来读取文本文档

public class File_read {
   public String readToString(String filepath) throws IOException {
	   File file =new File(filepath);
	   FileInputStream files=new FileInputStream(file);
		Long filelength =file.length();
		byte[] by =new byte[filelength.intValue()];
		StringBuffer buf = new StringBuffer();
	   if(file.isFile()&&file.exists()) {
		   
		
			if(files.read(by)!=-1) {
				buf.append(new String(by));
			}
			   
	   }files.close();
	  return buf.toString();
   }
}

六、心路历程与收获

这次的个人项目真的是个挑战,才打开博客的时候什么都看不懂,琢磨了半天都不知道从哪入手,想想这也太难了,对于我这种编程能力不是很强的人来说,想到写代码真的就有些头大,所以这次的代码也有一部分是借鉴了室友和同学的,然后才写了自己的代码,还问了他们好多问题,但这次的作业也有一些没有完成,那些没完成的希望在之后学会了再来继续完成。
不过这次的作业也给了我很多收获,起码知道了软件工程很看重流程,按着流程来确实井井有序,让人思路更清晰,还有就是那个PSP的预估时间和实际相差很大,可能是太高估了自己,哎,理想太丰满,现实太骨感,还是继续努力吧。

posted on 2018-09-17 21:46  网络1613冯一  阅读(151)  评论(2编辑  收藏  举报

导航