zoukankan      html  css  js  c++  java
  • 判断动词 形态的初实现

    遇到的问题:txt不区分大小写然而主文本区分,很是不知为何

    另一个问题,可解决就是目前一个动词放在一个txt下一步只需要针对第一个单词进行int i来判断是不是第一个,然后再整合

      1 Scanner scan=new Scanner(System.in);
      2     Word word=new Word();                                      //单词的链头
      3     Word lian,xin;                                             
      4     String str="";
      5     FileReader f=new FileReader("E:\578095023\FileRecv\软件工程\课堂测试\读入txt\飘英文版.txt");                //读取英文文件 
      6     char[] c=new char[1];                                 //每次读取一个字母
      7     int b=0;
      8     boolean exist=false;                              //判断单词是否存在于  word 链中
      9     Word word1=new Word();
     10     Word lian1,xin1;
     11     String str1="";
     12     FileReader f1=new FileReader("E:\578095023\FileRecv\软件工程\课堂测试\读入txt\stopwords.txt");   
     13     char[] c1=new char[1];
     14     int b1=0;
     15     boolean exist1=false;
     16     Word word2=new Word();
     17     Word lian2,xin2;
     18     String str2="";
     19     FileReader f2=new FileReader("E:\578095023\FileRecv\软件工程\课堂测试\读入txt\take.txt");   
     20     char[] c2=new char[1];
     21     int b2=0;
     22     boolean exist2=false;
     23     //stopwords文本
     24      while((b1=f1.read(c1))!=-1)                              //每次读取一个字母直到最后
     25         {
     26             //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
     27             if(String.valueOf(c1).equals("
    ")||String.valueOf(c1).equals("
    ")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(",")||String.valueOf(c1).equals(".")||String.valueOf(c1).equals(""")||String.valueOf(c1).equals("'"))
     28             {
     29                 
     30                 lian1=word1;
     31                 while(lian1!=null)            
     32                 {
     33 
     34                     if(lian1.value.equalsIgnoreCase(str1))           //如果单词在单词链中存在,则单词个数++
     35                     {
     36                         lian1.geshu++;exist1=true;break;
     37                     }
     38                     else
     39                     {
     40                         lian1=lian1.next;
     41                     }
     42                     
     43                 }
     44 
     45                 if(exist1==false)                        //如果不存在,则在单词链中添加
     46                 {
     47                     xin1=new Word(str1,1);
     48                     xin1.next=word1.next;
     49                     word1.next=xin1;
     50                     str1="";
     51                 }
     52                 else
     53                 {
     54                     exist1=false;
     55                     str1="";
     56                 }
     57             }
     58             else                                      //单词
     59             {
     60                 str1+=String.valueOf(c1);
     61             }
     62         }
     63      while(true)
     64      {
     65          xin1=new Word("",0);
     66             lian1=word1.next;
     67             //找到单词链中个数最多的
     68             while(lian1!=null)
     69             {
     70                System.out.println(lian1.value);
     71                 lian1=lian1.next;
     72             }       
     73          if(lian1==null)
     74          {
     75              break;
     76          }
     77      }
     78      System.out.println("如果需要增加 请输入1,否则输入0");
     79      int shu=0;
     80      shu=scan.nextInt();
     81      if(shu==1)
     82      {
     83          add();
     84          while((b1=f1.read(c1))!=-1)                              //每次读取一个字母直到最后
     85             {
     86                 //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
     87                 if(String.valueOf(c1).equals("
    ")||String.valueOf(c1).equals("
    ")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(",")||String.valueOf(c1).equals(".")||String.valueOf(c1).equals(""")||String.valueOf(c1).equals("'"))
     88                 {
     89                     
     90                     lian1=word1;
     91                     while(lian1!=null)            
     92                     {
     93 
     94                         if(lian1.value.equalsIgnoreCase(str1))           //如果单词在单词链中存在,则单词个数++
     95                         {
     96                             lian1.geshu++;exist1=true;break;
     97                         }
     98                         else
     99                         {
    100                             lian1=lian1.next;
    101                         }
    102                         
    103                     }
    104 
    105                     if(exist1==false)                        //如果不存在,则在单词链中添加
    106                     {
    107                         xin1=new Word(str1,1);
    108                         xin1.next=word1.next;
    109                         word1.next=xin1;
    110                         str1="";
    111                     }
    112                     else
    113                     {
    114                         exist1=false;
    115                         str1="";
    116                     }
    117                 }
    118                 else                                      //单词
    119                 {
    120                     str1+=String.valueOf(c1);
    121                 }
    122             }
    123          while(true)
    124          {
    125              xin1=new Word("",0);
    126                 lian1=word1.next;
    127                 //找到单词链中个数最多的
    128                 while(lian1!=null)
    129                 {
    130                    System.out.println(lian1.value);
    131                     lian1=lian1.next;
    132                 }       
    133              if(lian1==null)
    134              {
    135                  break;
    136              }
    137          }
    138      }
    139     //动态文本
    140      while((b2=f2.read(c2))!=-1)                              //每次读取一个字母直到最后
    141         {
    142             //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
    143             if(String.valueOf(c2).equals("
    ")||String.valueOf(c2).equals("
    ")||String.valueOf(c2).equals(" ")||String.valueOf(c2).equals(",")||String.valueOf(c2).equals(".")||String.valueOf(c2).equals(""")||String.valueOf(c2).equals("'"))
    144             {
    145                 
    146                 lian2=word2;
    147                 while(lian2!=null)            
    148                 {
    149 
    150                     if(lian2.value.equalsIgnoreCase(str2))           //如果单词在单词链中存在,则单词个数++
    151                     {
    152                         lian2.geshu++;exist2=true;break;
    153                     }
    154                     else
    155                     {
    156                         lian2=lian2.next;
    157                     }
    158                     
    159                 }
    160 
    161                 if(exist2==false)                        //如果不存在,则在单词链中添加
    162                 {
    163                     xin2=new Word(str2,1);
    164                     xin2.next=word2.next;
    165                     word2.next=xin2;
    166                     str2="";
    167                 }
    168                 else
    169                 {
    170                     exist2=false;
    171                     str2="";
    172                 }
    173             }
    174             else                                      //单词
    175             {
    176                 str2+=String.valueOf(c2);
    177             }
    178         }
    179      while(true)
    180      {
    181          xin2=new Word("",0);
    182             lian2=word2.next;
    183             //找到单词链中个数最多的
    184             while(lian2!=null)
    185             {
    186                System.out.println(lian2.value);
    187                 lian2=lian2.next;
    188             }       
    189          if(lian2==null)
    190          {
    191              break;
    192          }
    193      }
    194     
    195      //飘文本
    196     while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后
    197     {
    198         //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
    199         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("'"))
    200         {
    201             
    202             lian=word;
    203             while(lian!=null)            
    204             {
    205 
    206                 if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
    207                 {
    208                     lian.geshu++;exist=true;break;
    209                 }
    210                 else
    211                 {
    212                     int l1=0,l2=0;
    213                     while(true)
    214                     {
    215                         xin1=new Word("",0);
    216                            lian1=word1.next;
    217                            //找到单词链中个数最多的
    218                            while(lian1!=null)
    219                            {
    220                               if(str.equals(lian1.value))
    221                               {
    222                                   l1=1;
    223                               }
    224                                lian1=lian1.next;
    225                                
    226                            }       
    227                         if(lian1==null)
    228                         {
    229                             break;
    230                         }
    231                     }
    232                     
    233                     if(l1==1)
    234                     {
    235                         break;
    236                     }
    237                     lian=lian.next;
    238                 }
    239                 
    240             }
    241 
    242             if(exist==false)                        //如果不存在,则在单词链中添加
    243             {
    244                 while(true)
    245                    {
    246                        xin2=new Word("",0);
    247                           lian2=word2.next;
    248                           //找到单词链中个数最多的
    249                           while(lian2!=null)
    250                           {
    251                              if(str.equals(lian2.value))
    252                              {
    253 
    254                                  str="she";
    255                              }
    256                               lian2=lian2.next;
    257                               
    258                           }       
    259                        if(lian2==null)
    260                        {
    261                            break;
    262                        }
    263                    }
    264                 xin=new Word(str,1);
    265                 xin.next=word.next;
    266                 word.next=xin;
    267                 str="";
    268             }
    269             else
    270             {
    271                 exist=false;
    272                 str="";
    273             }
    274         }
    275         else                                      //单词
    276         {
    277             str+=String.valueOf(c);
    278         }
    279     }
    280     
    281     
    282     //   循环10次
    283     System.out.println("请输入您想查询的前几个出现此处最多的单词");
    284     int N=scan.nextInt();
    285     for(int i=1;i<=N;i++)                   
    286     {
    287         xin=new Word("",0);
    288         lian=word.next;
    289         //找到单词链中个数最多的
    290         while(lian!=null)
    291         {
    292             if(lian.geshu>xin.geshu)
    293             {
    294                 xin=lian;
    295             }
    296             lian=lian.next;
    297         }
    298         //输出单词链中个数最多的
    299         System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
    300         lian=word;
    301         //删除单词链中单词个数最多的
    302         while(lian.next!=null)
    303         {
    304             if(lian.next.value.equalsIgnoreCase(xin.value))
    305             {
    306                 lian.next=lian.next.next;
    307                 break;
    308             }
    309             lian=lian.next;
    310         }
    311     }
    312 }
  • 相关阅读:
    STL--string
    vector的常用总结
    poj 3279
    湖南省第八届大学生程序设计大赛原题 J
    湖南省第八届大学生程序设计大赛原题 E
    湖南省第八届大学生程序设计大赛原题 C
    湖南省第八届大学生程序设计大赛原题 B
    湖南省第八届大学生程序设计大赛原题 A
    湖南省第八届大学生程序设计大赛原题 D
    hdu1557
  • 原文地址:https://www.cnblogs.com/smartisn/p/10851815.html
Copyright © 2011-2022 走看看