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

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. shell习题2

    1---------------->>>>输入一个设备文件,输出这个设备文件的基本信息: 2.------------->>>>显示一个如下的菜单,cp ...

  2. Linux应用开发自学之路

    前言 在 「关于我 」那篇博文里,朋友们应该知道了我不是科班出身,是由机械强行转行到Linux应用开发方向.下面我就详细向大家介绍自己这一路上的转行历程,希望对大家有所启发. 我是学机械专业的,对于机 ...

  3. Unity官方案例精讲_2015_优化

    1.将公共变量从Inspector视图中隐藏:    [HideInInspector] [HideInInspector] public GameObject player; 2.限定Inspect ...

  4. MySQL8版本密码重置(老版本skip-grant-tables不起作用,MySQL服务开启之后立马关闭)

    原文:https://blog.csdn.net/gupao123456/article/details/80766154  MySQL密码重置思路MySQL的密码是存放在user表里面的,修改密码其 ...

  5. Mac应用程序无法打开或文件损坏的处理方法你知道吗?

    很多用户在安装Mac软件的时候,经常会遇到提示“xxx.app已损坏,打不开.您应该将它移到废纸篓“或”打不开的xxx.app,因为它来自身份不明的开发者”,如下图的样子: 真的损坏了么?是不是真的要 ...

  6. js 快速排序算法

    Array.prototype.quickSort = function() { var len = this.length; if(len < 2) return this; var left ...

  7. poj 1661 Help Jimmy(记忆化搜索)

    题目链接:http://poj.org/problem?id=1661 一道还可以的记忆化搜索题,主要是要想到如何设dp,记忆化搜索是避免递归过程中的重复求值,所以要得到dp必须知道如何递归 由于这是 ...

  8. 你不得不知道的HashMap面试连环炮

    为什么用HashMap? 简述一下Map类继承关系? 解决哈希冲突的方法? 为什么HashMap线程不安全? resize机制? HashMap的工作原理是什么? 有什么方法可以减少碰撞? HashM ...

  9. 数据库常用SQL语句(三):子查询

    一.为什么会使用子查询 虽然可以通过连接查询来实现多表查询数据记录,但不建议使用,因为连接查询的性能很差,为什么呢?我们来进行分析,例如 我们要查询部门表t_dept 和雇员表t_employee中的 ...

  10. java解决回文数

    递归解决palindrome问题 如果String仅仅只是一个或者0个字符,则它就是palindrome 否则比较字符串第一个和最后一个字符 如果第一个和最后一个字符不同,那么就不是palindrom ...