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

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. Flink的JobManager启动(源码分析)

    都知道Flink中的角色分为Jobmanager,TaskManger 在启动脚本里面已经找到了jobmanager的启动类org.apache.flink.runtime.entrypoint.St ...

  2. c++中strcmp,strcopy函数的使用

    1.strcmp(str1,str2) C/C++函数,比较两个字符串, 设这两个字符串为str1,str2,若str1==str2,则返回零:若str1<str2,则返回负数:若str1> ...

  3. 以后可得记住了--Python笔试面试题小结

    1.字符串处理 将字符串中的数字替换成其两倍的值,例如: 修改前:"AS7G123m (d)F77k" 修改后:"AS14G246m (d)F154k"   个 ...

  4. xib上的控件属性为什么要使用weak

    常规中,从xib拖出一个控件时,系统会自动生成一段代码,如下: 从这个图片中,可以看到控件的属性都是用的weak,这是为什么呢? 首先,如果把weak修改成strong其实也是可以的,但是会出现一个问 ...

  5. 前端开发-Web标准

    Web标准 1理解:结构 => html表现 => css行为 => js(dom + es) WEB标准(结构.表现.行为分离)有哪些优点呢? 易于维护:只需更改CSS文件,就可以 ...

  6. javaScript 基础知识汇总(三)

    1.循环:while 和 for while 循环 while(condition){ //代码 循环体 } do ... while  循环 let i =0; do { //循环体 }while( ...

  7. px和dp(内含大量的像素单位详解)

    1.前言: 读完本文你会学到什么: dp(device pixels) px(css pixels) pt(point) ppi(pixels per inch) dpi(dots per inch) ...

  8. 【CF1137C】 Museums Tour 拆点+缩点

    https://codeforc.es/contest/1137/problem/C # 题意 给你n个点,每个点有k天博物馆开放时间的安排表. 有m条单向道路,走过一条边需要一个晚上,经过后就是第二 ...

  9. CF1198E Rectangle Painting 2(最小割 思维

    这个题主要是转化为最小割的思路不好想到. 大意:给你一个大的正方形,有的点黑,有的点白,要把黑染白,你每次可以选一个矩形染色,代价是min(长,宽),问最小代价. 思路:对于一个要染色的块来说,他要被 ...

  10. HDU 1003 Max Sum * 最长递增子序列(求序列累加最大值)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...