• 单词统计(续)


    这次的功能延续上次的,同时又有所难度加深

    功能要求:

    第1步:输出单个文件中的前 N 个最常出现的英语单词。(上次的)

    第2步:第二步:  支持 stop words 

    频率出现最高的单词一般都是 "a",  "it", "the", "and", "this", 这些词, 可以做一个 stop word 文件 (停词表), 在统计词汇的时候,跳过这些词。  我们把这个文件叫 "stopwords.txt" file.  

    第3步:常用的短语

    file2.java

    package lianxi;
    
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Scanner;
    import lianxi.Word;
                                          
    public class file2 {
        public void file2() throws IOException      //主函数
        {
            Word word=new Word();                                      //单词的链头
            Word lian,xin;                                             
            String str="";
            FileReader f=new FileReader("D:/111.txt");                //读取英文文件
            char[] c=new char[1];                                 //每次读取一个字母
            int b=0;
            boolean exist=false;                              //判断单词是否存在于  word 链中
            while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后
            {
                //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
                if(String.valueOf(c).equals("
    ")||String.valueOf(c).equals("
    ")||String.valueOf(c).equals(" ")||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.print(c);
                }
            }
            //   循环10次
            System.out.println();
            Scanner scanner=new Scanner(System.in);
            System.out.println("请输入x,x为最多的x个单词");
            int s=scanner.nextInt();
            for(int i=1;i<=s;i++)                   
            {
                xin=new Word("",0);
                lian=word.next;
                //找到单词链中个数最多的
                while(lian!=null&&word.value.equals("The")==false&&word.value.equals("a")==false&&word.value.equals("It")==false&&word.value.equals("and")==false)
                {
                    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;
                }
            }
        }
    }
    View Code

    去掉stop words主要是加了一行这个while(lian!=null&&word.value.equals("The")==false&&word.value.equals("a")==false&&word.value.equals("It")==false&&word.value.equals("and")==false)

    如果还要加,继续往里面写就可以了,这里并没有读stopword.txt文件

  • 相关阅读:
    Django view(视图)
    Django ORM
    Django 路由系统(URLconf)
    Django简介
    Ubuntu 18.04安装MySQL指南
    一只简单的网络爬虫(基于linux C/C++)————配置文件设计及读取
    一只简单的网络爬虫(基于linux C/C++)————开篇
    单例模式及单例类的两种实现
    对象析构不析构?
    C++11的mutex和lock_guard,muduo的MutexLock 与MutexLockGuard
  • 原文地址:https://www.cnblogs.com/mitang0-0/p/11061732.html
Copyright © 2020-2023  润新知