有关使用Scanner读取长篇文章的问题

等待自由 2012-06-07 07:43:57
要求 读取已知的 长篇文章 请使用 Scanner 且 取出 文章中 单词出现 最多的单词 老师留的作业 太困难啊 请大虾们帮忙看下 谢谢了
...全文
173 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
myisfei 2012-06-07
  • 打赏
  • 举报
回复
高手,[Quote=引用 2 楼 的回复:]
用正则吧
[/Quote]
Seanake 2012-06-07
  • 打赏
  • 举报
回复
我有了java7的一些特性,楼主可以参考相应文章。
Seanake 2012-06-07
  • 打赏
  • 举报
回复
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CountWord {
public static void main(String[] args) {
HashMap<String, Integer> hm = new HashMap<>();
int sum = 1;
try (FileInputStream fis = new FileInputStream("a.txt");
Scanner scan = new Scanner(fis)) {
while (scan.hasNext()) {
Matcher m2 = Pattern.compile("\\w+").matcher(scan.next());
while (m2.find()) {
if (hm.containsKey(m2.group())) {
sum = (int) hm.get(m2.group());
sum++;
hm.put(m2.group(), sum);
} else {
hm.put(m2.group(), sum);
}
}
sum = 1;
}
System.out.println("文章单词统计如下: " + "\n" + hm);
int max = 1;
String s = "";
for (String key : hm.keySet()) {
if (max < (int) hm.get(key)) {
max = (int) hm.get(key);
s = key;
}
}
System.out.println("出现最多的单词是:" + s + "\n出现" + max + "次");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e2) {
e2.printStackTrace();
}

}
}



文章为:
"mmmm mm"mmmmmmmmmmmmmm m"m mmm mm mm./ .mm' mmmm mmmmm mmm mm


输出结果为:

文章单词统计如下:
{mm=5, mmmmmmmmmmmmmm=1, mmmmm=1, mmm=2, mmmm=2, m=2}
出现最多的单词是:mm
出现5次
我的QQ空间:
http://user.qzone.qq.com/1689728840/infocenter
Seanake 2012-06-07
  • 打赏
  • 举报
回复
用正则吧
  • 打赏
  • 举报
回复
可以将每个单词放在HashMap里面,Map的key为单词,value为单词出现次数(如果之前有的话,value++,如果没有的话,value置为1,因为用Hash实现,所有查找调用contains(key)方法效率不会太差)。
处理完所有单词后,在遍历一遍Map中的元素,找出value最大的。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧