github地址:https://github.com/JUNYU217/2016-03-08
开发语言:Java
开发工具:UltraEdit
|| 为月末了,网费欠了...很抱歉的拖了那么久的作业 QAQ ||
------个人小结------
通过这次程序的编写,我把java自学了一遍(原先只会用c++..)通过百度了解到了map的使用方法 ,差强人意,不过总归是编出来了。
------作业要求------
(1). 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。
-
- 字母: A-Z, a-z.
- 字母数字: A-Z, a-z, 0-9.
- 分隔符: 非字母数字
- 单词:
- 包含有4个或4个以上的字母
- 单词由分隔符分开
- 如果一个字符串包含_非_字母数字,则不是单词
- 单词大小写不敏感,例如 “file”、“FILE”和“File”可以看作同一个单词
- 单词必须是字母开头,“file123”是单词,“123file”不是单词
(2). 示例
输入
Word is case insensitive, i.e. “file”, “FILE” and “File” are considered the same word.
输出
file: 3
word: 2
case: 1
considered: 1
insensitive: 1
same: 1
------程序编写------
先将测试的文段改造一下,并将其分割开
text = text.replaceAll("[\\‘‘.“”,,]", ""); //删除字符串中的标点符号 text = text.toLowerCase();//将文字全部转换为小写 StringTokenizer take = new StringTokenizer(text); //StringTokenizer是一个用来分隔String的应用类
将分割开的单词存入到map中
while( take.hasMoreElements() ) { word=take.nextToken() ; if(word.length()>=4) { Integer count = map.get(word); if(count == null) { map.put(word,1); } else { map.put(word,++count); } } i++; }
通过遍历打印出结果
for(Map.Entry<String,Integer> entry : map.entrySet()) { System.out.println(entry.getKey() +" : "+ entry.getValue()); }
------程序运行------
测试数据:Word is case insensitive, i.e. “file”, “FILE” and “File” are considered the same word.
测试结果: