其中的难点,是空格,以及如果第一个是空格怎么办,虽然事后看着很简单,但是做的时候却十分的困难!

static void Daunyu()throws IOException
{
    Word word=new Word();                                      //单词的链头
    Word lian,xin;                                            
    String str="";
    FileReader f=new FileReader("E:\\578095023\\FileRecv\\软件工程\\课堂测试\\读入txt\\飘英文版.txt");                //读取英文文件
    char[] c=new char[1];                                 //每次读取一个字母
    int b=0;
    boolean exist=false;                              //判断单词是否存在于  word 链中
    Word word1=new Word();
    Word lian1,xin1;
    String str1="";
    FileReader f1=new FileReader("E:\\578095023\\FileRecv\\软件工程\\课堂测试\\读入txt\\stopwords.txt");  
    char[] c1=new char[1];
    int b1=0;
    boolean exist1=false;
    //stopwords文本
  while((b1=f1.read(c1))!=-1)                              //每次读取一个字母直到最后
     {
         //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
         if(String.valueOf(c1).equals("\r")||String.valueOf(c1).equals("\n")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(",")||String.valueOf(c1).equals(".")||String.valueOf(c1).equals("\"")||String.valueOf(c1).equals("'"))
         {
          
             lian1=word1;
             while(lian1!=null)           
             {
              if(lian1.value.equalsIgnoreCase(str1))           //如果单词在单词链中存在,则单词个数++
                 {
                     lian1.geshu++;exist1=true;break;
                 }
                 else
                 {
                     lian1=lian1.next;
                 }
                
             }
             if(exist1==false)                        //如果不存在,则在单词链中添加
             {
                 xin1=new Word(str1,1);
                 xin1.next=word1.next;
                 word1.next=xin1;
                 str1="";
             }
             else
             {
                 exist1=false;
                 str1="";
             }
         }
         else                                      //单词
         {
             str1+=String.valueOf(c1);
         }
     }                            //判断单词是否存在于  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("\r")||String.valueOf(c).equals("\n")||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
                   {
                    int l1=0,l2=0;
                    while(true)
                 {
                  xin1=new Word("",0);
                        lian1=word1.next;
                        //找到单词链中个数最多的
                        while(lian1!=null)
                        {
                           if(str.equals(lian1.value))
                           {
                            l1=1;
                           }
                            lian1=lian1.next;
                           
                        }      
                  if(lian1==null)
                  {
                   break;
                  }
                 }
                     if(str.startsWith(" "))
                     {
                      str=str.substring(1);
 
                     }                     if(l1==1||!str.contains(" "))
                    {
                     break;
                    }
                       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);
         }
     }
    
    
     //   循环10次
     System.out.println("请输入您想查询的前几个出现此处最多的单词");
  Scanner scan=new Scanner(System.in);
  int N=scan.nextInt();
     for(int i=1;i<=N;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;
         }
     }
 }

判断java中最多的词组的更多相关文章

  1. 判断java中两个对象是否相等

    java中的基本数据类型判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false. 但是java中的引用类型的对象比较变态,假设有两个引用对象obj1,obj2 ...

  2. 利用正则表达式判断Java中的秒钟、分钟、小时、日、月是否符合规则

    // 定义校验规则 Pattern patRule = Pattern.compile("判断规则"); // 校验结果 patRule.matcher("判断的对象&q ...

  3. 讲说问题:|和||的区别以及&和&&的区别。2、Java中的数据类型分几类?基本数据类型有哪些?

    |和||的区别以及&和&&的区别. |或 为或运算 判断为逻辑或 || 为短路或 只有逻辑判断 当左侧为真不再继续判断 &与 为与运算 判断为逻辑与 && ...

  4. [转]Java中怎样判断一个字符串能否转成数字

    原文地址:http://blog.sina.com.cn/s/blog_7bac470701014mjf.html 判断字符串是否为数字 //1.正则表达式  public static boolea ...

  5. java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

    在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...

  6. 161101、在Java中如何高效判断数组中是否包含某个元素

    如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...

  7. java中字符串的非空判断

    问题如下:在java 中 字符串为null 如何判断String str;if(str==null) ??str.equal("null") ?? 答:我觉得应该搞清楚字符串对象和 ...

  8. JAVA 中两种判断输入的是否是数字的方法__正则化_

    JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...

  9. java中判断两个字符串是否相等的问题

    我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...

随机推荐

  1. MongoDB 数据库的学习与使用

    MongoDB 数据库 一.MongoDB 简介(了解) ​ MongoDB 数据库是一种 NOSQL 数据库,NOSQL 数据库不是这几年才有的,从数据库的初期发展就以及存在了 NOSQL 数据库. ...

  2. 消息中间件——RabbitMQ(八)高级特性全在这里!(下)

    前言 上一篇消息中间件--RabbitMQ(七)高级特性全在这里!(上)中我们介绍了消息如何保障100%的投递成功?,幂等性概念详解,在海量订单产生的业务高峰期,如何避免消息的重复消费的问题?,Con ...

  3. PHPstorm 运行时出现 Not Fount 解决办法

    PHPstorm 对默认 localhost 有解析问题,需要手动配置 打开菜单栏 Tools->Deployment->configuration,如下图: 我这是配置完的,你的应该什么 ...

  4. linux安装redis详细步骤(系统centos 6.4 )

    1.安装redis 进入安装目录下载: cd  /usr/local/redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz 解 ...

  5. (一)配置linux环境实现持续集成

    目录 1.Centos7操作系统 2.Gnome 可视化桌面 3.远程shell工具 4.远程桌面工具 5.Jdk 6..Net Core 7.Git 8.Docker 容器 9.Kubernetes ...

  6. 消息中间件——RabbitMQ(九)RabbitMQ整合Spring AMQP实战!(全)

    前言 1. AMQP 核心组件 RabbitAdmin SpringAMQP声明 RabbitTemplate SimpleMessageListenerContainer MessageListen ...

  7. PAT 天梯杯 L2-014 列车调度

    火车站的列车调度铁轨的结构如下图所示. Figure 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨道进入,最后从出口 ...

  8. Mysql相关:navicat for mysql 加注释

    在 navicat 中有三种注释的书写方式: 以 # 开头的字符串,可以多个 # 连续以 – 开头的字符串,注意:只能是 – ,而且 – 后面需要加一个半角空格以 /* */ 包围的字符串,类似于 J ...

  9. 一起来读Netty In Action之netty的组件和设计(二)

    在上一篇博客中,我们给出了java高性能网络编程的技术基础,也简单的介绍了netty的核心构件,在这一篇博客中,我们将更加详细的研究netty的各个组件,并且密切关注它们是如何通过协作来支撑这些体系结 ...

  10. CVE-2014-6271 Shellshock 破壳漏洞 复现

    补坑. 什么是shellshock ShellShock是一个BashShell漏洞(据说不仅仅是Bash,其他shell也可能有这个漏洞). 一般情况来说,系统里面的Shell是有严格的权限控制的, ...