给定一篇英文文章,找出其中使用频率最高的英语单词。

原创 2015年11月17日 19:40:05

  这道题,对于学java的练习的学友来说是一道不可缺少的题目,这一道题,我刚一开始接触的时候认为挺简单的一道题,但是在做的时候发现了很多问题,其中对于map的运用,对于遍历的操作,以及对键值对的理解等。
  

“`
import java.io.BufferedReader;
import java.io.FileReader;
import java.security.KeyStore.Entry;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;

public class Map_t {

public static void main(String[] args) throws Exception {

    BufferedReader reader = new BufferedReader(new FileReader("1.txt"));//1.txt是在同一目录下的。
    StringBuffer buffer = new StringBuffer();
    String line = null;
    while ((line = reader.readLine()) != null) {
        buffer.append(line);
    }
    reader.close();//以上是对文件的读取,就是读取文章
    String string = buffer.toString();
    String[] word = new String[1000];//定义一个数组,来储存文章中的单词,没有用List,感觉用集合的话更好,这里有限制,是1000.
    StringTokenizer st = new StringTokenizer(string,";!., ");//去除文章中的几个符号,当然这只是一些符号,还有一些没有写上,所以不全面。
    Map<String,Integer>m = new HashMap<String,Integer>();
    int x = 0;
    while( st.hasMoreElements() ){
        String w = st.nextToken();
        word[x] = w;
        m.put(w, 0);//哈希的方法将重复的单词去除,存入m中。
        x++;
    }
   Set<String> set = m.keySet();
    for(int i=0;word[i]!=null;i++){
        Iterator<String> it = set.iterator();
         while(it.hasNext()){//遍历找出每个单词有多少个
              String k = it.next();
              if(word[i].equals(k)){
                    int c = m.get(k);                  
                    c++;
                    m.put(word[i],c);

              }
         }

   }
    int value=0;
    String maxKey = null;
    Iterator itor=m.entrySet().iterator();   
    List list=new ArrayList();
    while(itor.hasNext()){ //在遍历让找出最多的单词有几个。  

        Map.Entry<String,Integer> entry=(Map.Entry<String,Integer>)itor.next();   
        list.add(entry.getValue());

        Collections.sort(list);

        value = Integer.parseInt(list.get(list.size()-1).toString());
    }

    Iterator it=m.entrySet().iterator();
    while (it.hasNext()){//遍历找出最多的数对应的单词。 
        Map.Entry mapentry = (Map.Entry) it.next(); 
        if((int)mapentry.getValue()==value){
            System.out.println(mapentry.getKey() ``

“/” + mapentry.getValue());
}
}

}

}

“`上面是代码,当然还是有一定的不足,我认为写的有点复杂了,暂时没有想到更好的方法,也希望谁有更好的方法告诉我,其中运用了很多集合中的知识。学到的也挺多。

统计一篇英文文章中出现次数最多的10个单词

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOExce...
  • u010512607
  • u010512607
  • 2014年10月12日 00:19
  • 1191

统计一篇文档中每个单词出现的次数,频率

  • 2009年11月11日 17:59
  • 2KB
  • 下载

java实现文件单词频率统计

思路: 1、将文件内容存入StringBuffer中。 2、利用split()函数分割字符串,可按(“,”,“.”,“!”,“空格”,“回车”)分割,得到一个数组。 3、遍历数组,将其放入一...
  • love_Sophie
  • love_Sophie
  • 2011年09月13日 15:49
  • 6451

给定一篇英文文章,找出其中使用频率最高的英语单词。

给定一篇英文文章,找出其中使用频率最高的英语单词。 这道题,对于学java的练习的学友来说是一道不可缺少的题目,这一道题,我刚一开始接触的时候认为挺简单的一道题,但是在做的时候发现了很多问题,其中对于...
  • yuanhangLVli
  • yuanhangLVli
  • 2015年11月17日 19:40
  • 1512

Java interview 统计一篇英文文档的单词数,并输出次数最多的10个

Java interview 统计一篇英文文章的单词数,并输出次数最多的10个 先用一个List把文档中所有word存储起来; 然后用Map来存储word和次数,Map中的key是不允许重复的; ...
  • cleverlzc
  • cleverlzc
  • 2015年10月16日 16:04
  • 1326

查找文本中n个出现频率最高的单词

#!/bin/bash end=$1 #S1是输出频率最高单词的个数 cat $2 | #是目标文本文件的名称 tr -cs "[a-z][A-Z]" "[\n*]" | #将文本文件以一行一...
  • wangwenhao00
  • wangwenhao00
  • 2017年09月11日 16:32
  • 350

写一个程序,分析一个文本文件(英文文章)中各个单词出现的频率,并且把频率最高的10词打印出来

写一个程序,分析一个文本文件(英文文章)中各个单词出现的频率,并且把频率最高的10词打印出来   在看到这个问题的时候,我决定用c语言来进行编写,并且将这个问题进行了分解. ...
  • u011680118
  • u011680118
  • 2015年04月03日 09:46
  • 1483

一篇文章中求出现频率最高的10个单词(C++实现tanglanting)

Write a program for displaying the ten most frequent words in a file such that your program should b...
  • tanglanting12
  • tanglanting12
  • 2013年11月02日 11:35
  • 706

10025---sort +awk+uniq 统计文件中出现次数最多的前10个单词

原文 使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词。 cat words.txt | so...
  • xxxcyzyy
  • xxxcyzyy
  • 2017年06月28日 01:01
  • 332

统计一篇英文文章中所有的单词以及出现的次数

这是CC视频的最后一道面试题,当时纯手写写的还不错,不过在匹配英文单词的时候大小写的情况没有统一([a-zA-Z]和toLowerCase()),回来之后重新写了。...
  • u014363151
  • u014363151
  • 2014年04月15日 09:40
  • 2201
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给定一篇英文文章,找出其中使用频率最高的英语单词。
举报原因:
原因补充:

(最多只允许输入30个字)