Java 倒入文章显示前n个单词频率

package com_1;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

class Word                                        //定义出一个单词类
{
    String value;                                  //具体的单词
    int geshu;                                     //出现的个数
    Word next;                                     //将单词链起来
    public Word(String value,int geshu)            //带参构造函数
    {
        this.value=value;
        this.geshu=geshu;
        next=null;
    }
    public Word()                                   //空构造函数
    {
        this.value="";
        this.geshu=0;
        next=null;
    }
}
public class Shuru {
    public static void main(String args[]) throws IOException      //主函数
    {   Scanner dc = new Scanner(System.in);
        Word word=new Word();                                      //单词的链头
        Word lian,xin;
        String str="";
        FileReader f=new FileReader("F:\\eclipse-workspace\\com_1\\src\\1.txt");                //读取英文文件
        char[] c=new char[1];                                 //每次读取一个字母
        int b=0;
        boolean exist=false;                              //判断单词是否存在于  word 链中
        while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后
        {
            //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
            if(String.valueOf(c).equals("\r")||String.valueOf(c).equals("\n")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals("\"")||String.valueOf(c).equals("‘"))
            {
                lian=word;
                while(lian!=null)
                {
                    if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
                    {
                        lian.geshu++;exist=true;break;
                    }
                    else
                    {
                        lian=lian.next;
                    }
                }
                if(exist==false)                        //如果不存在,则在单词链中添加
                {
                    xin=new Word(str,1);
                    xin.next=word.next;
                    word.next=xin;
                    str="";
                }
                else
                {
                    exist=false;
                    str="";
                }
            }
            else                                      //单词
            {
                str+=String.valueOf(c);
            }
        }
        System.out.println("请输入你查找的前n个值");
        int a;
        a=dc.nextInt();
        //   循环a次
        for(int i=1;i<=a;i++)
        {
            xin=new Word("",0);
            lian=word.next;
            //找到单词链中个数最多的
            while(lian!=null)
            {
                if(lian.geshu>xin.geshu)
                {
                    xin=lian;
                }
                lian=lian.next;
            }
            //输出单词链中个数最多的
            System.out.println("弟"+i+"个 :"+xin.value+"个数:"+xin.geshu);
            lian=word;
            //删除单词链中单词个数最多的
            while(lian.next!=null)
            {
                if(lian.next.value.equalsIgnoreCase(xin.value))
                {
                    lian.next=lian.next.next;
                    break;
                }
                lian=lian.next;
            }
        }
    }
}

  

原文地址:https://www.cnblogs.com/sunhongbin/p/11794847.html

时间: 2024-11-25 16:38:47

Java 倒入文章显示前n个单词频率的相关文章

只显示 前100个字 java 实现截取字符串!使用! &lt;c:if test=&quot;${fn:length(onebeans.info)&gt;100 }&quot;&gt;${ fn:substri

博客 文章 只显示 前100个字 java 实现截取字符串!使用! <c:if test="${fn:length(onebeans.info)>100 }">${ fn:substri http://blog.csdn.net/tfy1332/article/details/22811835 2014-04-02 17:14 3406人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. <%@ taglib prefix=&qu

用java实现输出英文小说飘中出现次数最多的前N个单词(附:使用文件读写)

本文参考于:https://blog.csdn.net/u014204432/article/details/40348839 一.题目 输出单个文件(<飘> 英文版)中的前 N 个最常出现的英语单词,并将结果输入到文本文件中. 二.程序设计思路 1.首先将英文小说飘文件内容用文件读写方式读入StringBuffer中,然后一行一行读取并去掉句子和单词 间空格然后将StringBuffer转换成String,然后再将所有字符转化成小写字符,然后再将句子分割成单词并 存入字符数组. 2.随后遍历

统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数

统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数 from collections import Counter import re with open('a.txt', 'r', encoding='utf-8') as f: txt = f.read() c = Counter(re.split('\W+',txt)) #取出每个单词出现的个数 print(c) ret = c.most_common(10) #取出频率最高的前10个 print(ret) 原

取前k个出现频率最大的单词

package aprioriproduct; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Map; import ja

N个任务掌握java系列之统计一篇文章中单词出现的次数

问题:统计一篇文章中单词出现的次数 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,key是字符串类型,保存单词:value是数字类型,保存该单词出现的次数. (3)遍历(1)中得到的字符串数组,对于每一个单词,考察Map的key中是否出现过该单词,如果没出现过,map中增加一个元素,key为该单词,value为1(第一次出现): 如果,在map的key中发现了该单词,则通过key找到对应的value(单词出现的次数)

统计一段文章的单词频率,取出频率最高的5个单词和个数(python)

练习题:统计一段英语文章的单词频率,取出频率最高的5个单词和个数(用python实现) 怎么判定单词?1 不是字母的特殊字符作为分隔符分割字符串 (避免特殊字符的处理不便,全部替换成'-')2 遍历字符串,取每个word3 正则匹配 怎么统计个数?将wordlist的word和word的个数放入dict,排序 ''' dinghanhua 2018-11-11 练习:一段英文文章,统计每个单词的频率,返回出现频率最高的5个单词和次数 ''' import re art = ' If we wan

关于IntellIJ IDEA 2016.2.4新建项目的Java Enterprise没有显示问题

一.关于IntellIJ IDEA 2016.2.4新建项目的Java Enterprise没有显示问题解决方案 二.设置成功后重启即可显示如下图所示界面 三.本文为作者原创,如转载请注明出处.

java总结文章

java总结文章 原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks Talk is cheap. Show me the code. Written In The Font 图能抵过一切,喜欢咖啡喜欢java. Content 我有时间就慢慢整理上去. java基础 1.老湿不给你力啊:各种加密解密 java进阶 <改善JAVA> 1.改善JAVA代码01:考虑静态工厂方法取代构造器 <151个建议>

js查找一篇英文文章中出现频率最高的单词

下面这个函数是js查找一篇英文文章中出现频率最高的单词(由26个英文字母大小写构成),输出该单词及出现次数,不区分大小写,主要是正则的运用: function counts(article){ article = article.trim().toUpperCase(); var array = article.match(/[A-z]+/g); article = " "+array.join(" ")+" "; var max = 0,wor