作业3-个人项目<词频统计>
上了一天的课,现在终于可以静下来更新我的博客了。
越来越发现,写博客是一种享受。来看看这次小林老师的“作战任务”。
词频统计
- 单词:
- 包含有4个或4个以上的字母
- 单词由分隔符分开
- 如果一个字符串包含_非_字母数字,则不是单词
- 单词大小写不敏感,例如 “file”、“FILE”和“File”可以看作同一个单词
- 单词必须是字母开头,“file123”是单词,“123file”不是单词
简单理一下思路:
1.从控制台输入英语句子(字符串)
2.在句子中分割出一个一个单词
3.要筛选出4个字母以上的单词
4.还要把数字开头的字母筛选出去
然后呢?食材都准备好了,就该动刀了:
Scanner sc=new Scanner(System.in);
//定义es接收英文句子字符串
String es=null;
System.out.println("请输入英语短句:");
//小提示:next遇到空格返回,nextLine可读一行
es=sc.nextLine();
//为了不区分大小写,把所有字母转换成小写
es= es.toLowerCase();
//这个类会将字符串分解
StringTokenizer token=new StringTokenizer(es);
这里用到了一个类库:import java.util.StringTokenizer;
小林老师那篇引用的博客里说它在字符串中无所不能。这里就用到
一处:分割字符串。来看这行代码:
String word=token.nextToken(", ?.!:\"\"\''\n");
当我从头读取输入的字符串时,遇到上述括弧里的非字母字符时,
产生分割,即产生一个单词。
接下来用到HashMap来统计单词出现的频率
while(token.hasMoreTokens())
{
//按照,[空格] ? . !,双引号,单引号,换行符去分割
String word=token.nextToken(", ?.!:\"\"\''\n");
//取单词的第一个字符,调用函数isNumeric判断word的首字符是否为数字,并且判断单词长度是否大于3
if( !isNumeric(word.subSequence(0,1))&&word.length()>=4)
{
//统计单词的个数
if(map.containsKey(word))
{
int count=map.get(word);
//如果HashMap已有这个单词,则使它的数量加1
map.put(word, count+1);
}
//如果没有第二个相同单词,数量为1
else
map.put(word, 1);
}
}
在遍历过程中, 我同时完成两件事:筛选掉以数字开头的单词,
筛选出长度大于3的单词。
这里提一下自己当时遇到的问题:如何判断单词是不是以数字开头
呢?上网查了一下,一共有三种方法,我当然用了自己觉得比较简
单的方法:正则表达式法。你也可能注意到上面的代码中调用了一个
函数isNumeric(String chr),现在我pou出这个函数
public static boolean isNumeric(CharSequence charSequence)
{
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(charSequence);
if( !isNum.matches() )
{
return false;
}
return true;
}
完成以上任务就剩输出了:
List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
System.out.println("该句子中所有长度大于3的单词出现的次数分别如下:");
//输出结果
for (int i = 0; i < infoIds.size(); i++)
{
Entry<String, Integer> id = infoIds.get(i);
System.out.println(id.getKey()+":"+id.getValue());
}
使用小林老师作业中的实验数据(增加一个以数字
开头的单词),运行结果如下:
总结:这次作业学到了不少东西:正则表达式判断数字
字符,HashMap里的方法又学习一遍,取字符串的首字符。
记得一个老师说过:java语言跟外语很相似,无非是语法和
单词,而java的单词就是类库。而这次也感受到java类库的
强大。
完整代码清单见: https://github.com/miaozhongfeng/my-repository/blob/master/zuoye3.java
作业3-个人项目<词频统计>的更多相关文章
- 软件工程第一次个人项目——词频统计by11061153柴泽华
一.预计工程设计时间 明确要求: 15min: 查阅资料: 1h: 学习C++基础知识与特性: 4-5h: 主函数编写及输入输出部分: 0.5h: 文件的遍历: 1h: 编写两种模式的词频统计函数: ...
- 个人项目-词频统计(语言:C++)
词频统计 (个人项目) 要求 (1). 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率. 附加要求:读入一段文本文件,统计该文本文件中单词的频率. (2) ...
- 个人项目----词频统计WEB(部分功能)
需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四. ...
- 作业4-两人编程<词频统计>
协作:苗中峰,刘鑫成 我主要攻克排序,成哥写了文件流的使用.整合工作由我完成,成哥帮我查阅资料,避免和解决语法错误. 这次任务较作业三的变化是: * ...
- 结对项目— 词频统计2(语言C++)
结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...
- 结对项目— 词频统计(语言C++)
结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...
- task4:结对项目-词频统计
结对人:周楠 思路:利用TreeMap实现key字典序,然后输出到LinkedList,然后用Comparator,实现字典值从大到小排序,但是key实现值相同的key字典序的想出的实现方法,但是一直 ...
- USTC《现代软件工程》春季学期——第一次个人作业:词频统计
截止日期 2018年3月29日23:59 要求 1. 对源文件(*.txt,*.cpp,*.h,*.cs,*.html,*.js,*.java,*.py,*.php等,文件夹内的所有文件)统计字符数. ...
- C# 词频统计 东北师范大学 软件项目管理 第一次作业
一.作为杨老师的学生第一次听杨老师讲课,印象最深的就是:工程中所有步骤之间是乘法,如果任何一步为0,工程就做不出来了.以前所有老师讲到的都是不要太在乎结果,努力的过程很重要,但是这在软件工程中不合适了 ...
随机推荐
- 课堂练习&课下作业
设计思路: 列举出买十本的所有情况:1.一本的时候不打折扣 2.两本的时候买两本价最低 3.三本的时候买三本价最低 4.四本的时候买四本价最低 5.五本的时候买五本价最低 6.六本的时候分一本和五本价 ...
- Android基础之项目结构分析
创建了第一个Android项目,用工具开发Android项目,我们有必要熟悉项目的目录结构,清楚各个项目下面放置的是什么东西.展开整个项目,其根目录结构(选用不同版本的SDK文件目录结构会有一些不同, ...
- ASP.NET-【缓存】-使用ASP.NET缓存
缓存一个List 泛型结构 1.显示 var s = Get("personsl"); foreach (var item in s) { Response.Write(item. ...
- 如何获得bin/Debug目录的路径?
这个可以使用下面的方法 答案:bin目录:通过应用程序集合AppDomain.CurrentDomain.BaseDirectory:带有"\"System.Environment ...
- POJ 3249 拓扑排序+DP
貌似是道水题.TLE了几次.把所有的输入输出改成scanf 和 printf ,有吧队列改成了数组模拟.然后就AC 了.2333333.... Description: MR.DOG 在找工作的过程中 ...
- eclipse隐藏菜单栏实现全部酷黑主题
将eclipse升级到了最新版的neon,将主题颜色设置为了dark,瞬间高大上了很多,唯独菜单栏还是白色的,很刺眼.况且菜单栏不是很常用,所以我们可以将菜单栏隐藏起来,以达到全部黑色的效果. 步骤: ...
- uva -- 10766
一开始我感觉是模板题 是不想写的 后来发现我的模板上没有 就敲了一遍 可以忽略这句屁话 在信息学竞赛中,有关生成树的最优化问题如最小生成树等是我们经常遇到的,而对生成树的计数及其相关问题则少 ...
- 判断数据库内容,在页面显示自定义数据case when
判断数据库内容,在页面显示自定义数据 case when...then ...else...end 比如:数据库内容是这样: 通过sql语句判断,数据库的name字段,内容是月桂的,显示嫦娥,其他的显 ...
- C#获取指定日期为一年中的第几周
/// <summary> /// 获取指定日期,在为一年中为第几周 /// </summary> /// <param name="dt">指 ...
- (DFS)hdoj1010-Tempter of the Bone
#include<cstdio> #include<cmath> #include<stdlib.h> ][]={{,},{,-},{,},{-,}},escape ...