zoukankan      html  css  js  c++  java
  • 对一篇英语文章内单词/字母的统计

      1 package fengzhuang;
      2 import java.io.BufferedReader;
      3 import java.io.File;
      4 import java.io.FileInputStream;
      5 import java.io.FileReader;
      6 import java.io.IOException;
      7 import java.io.InputStreamReader;
      8 import java.util.Scanner;
      9 
     10     class Word                                       
     11     {
     12         String value;                                 
     13         int geshu;                                    
     14         static Word next;                                    
     15         public Word(String value,int geshu)            
     16         {
     17             this.value=value;
     18             this.geshu=geshu;
     19             next=null;
     20         }
     21         public Word()                                   
     22         {
     23             this.value="";
     24             this.geshu=0;
     25             next=null;
     26         }
     27     }    
     28     public class Ceshi {
     29     public static void main(String[] args) {
     30         System.out.println("请输入您想完成的功能:");
     31         int i=0;
     32     for(int n=1;n<10;n++)
     33         {System.out.println("1:统计字母;2:统计单词;3:指定单词");
     34         
     35         Scanner scan=new Scanner(System.in);
     36         i=scan.nextInt();
     37         if(i==1)
     38         {
     39             Zimu();
     40         }
     41         if(i==2)
     42         {
     43             try {
     44                 Quan();
     45             } catch (IOException e) {
     46                 // TODO Auto-generated catch block
     47                 e.printStackTrace();
     48             }
     49         }
     50         if(i==3)
     51         {
     52             try {
     53                 Danci();
     54             } catch (IOException e) {
     55                 // TODO Auto-generated catch block
     56                 e.printStackTrace();
     57             }
     58         }
     59     System.out.println("是否退出 退出0,不退出-其他");
     60     n=scan.nextInt();
     61     if(n==0)
     62     {
     63         break;
     64     }
     65         }
     66     }
     67     static void Zimu()
     68     {
     69          try {
     70              char shu[] = new char[10000000];
     71              char zimu[] = new char[52];
     72              int j=0;
     73              int count[]=new int[52];
     74              String pathname="E:\o1.txt";
     75              File filename=new File(pathname);
     76              InputStreamReader reader=new InputStreamReader(new FileInputStream(filename));
     77              BufferedReader br=new BufferedReader(reader);
     78              String line[]=new String[100];;    
     79              for(int i=0;i<line.length;i++){
     80              line[i]=br.readLine();    
     81              }
     82              br.close();
     83              int k=0;
     84               while(line[k]!=null) {
     85                   for(int i=0;i<line[k].length();i++) {                                
     86                        shu[j]=line[k].charAt(i);
     87                        j++;                     
     88                   }
     89                   k++;
     90              }    
     91              for(int i=0;i<shu.length;i++) {
     92                   switch(shu[i]) {
     93                   case 'a':zimu[0]='a';count[0]++;break;
     94                   case 'b':zimu[1]='b';count[1]++;break;
     95                   case 'c':zimu[2]='c';count[2]++;break;
     96                   case 'd':zimu[3]='d';count[3]++;break;
     97                   case 'e':zimu[4]='e';count[4]++;break;
     98                   case 'f':zimu[5]='f';count[5]++;break;
     99                   case 'g':zimu[6]='g';count[6]++;break;
    100                   case 'h':zimu[7]='h';count[7]++;break;
    101                   case 'i':zimu[8]='i';count[8]++;break;
    102                   case 'j':zimu[9]='j';count[9]++;break;
    103                   case 'k':zimu[10]='k';count[10]++;break;
    104                   case 'l':zimu[11]='l';count[11]++;break;
    105                   case 'm':zimu[12]='m';count[12]++;break;
    106                   case 'n':zimu[13]='n';count[13]++;break;
    107                   case 'o':zimu[14]='o';count[14]++;break;
    108                   case 'p':zimu[15]='p';count[15]++;break;
    109                   case 'q':zimu[16]='q';count[16]++;break;
    110                   case 'r':zimu[17]='r';count[17]++;break;
    111                   case 's':zimu[18]='s';count[18]++;break;
    112                   case 't':zimu[19]='t';count[19]++;break;
    113                   case 'u':zimu[20]='u';count[20]++;break;
    114                   case 'v':zimu[21]='v';count[21]++;break;
    115                   case 'w':zimu[22]='w';count[22]++;break;
    116                   case 'x':zimu[23]='x';count[23]++;break;
    117                   case 'y':zimu[24]='y';count[24]++;break;
    118                   case 'z':zimu[25]='z';count[25]++;break;
    119                   case 'A':zimu[26]='A';count[26]++;break;
    120                   case 'B':zimu[27]='B';count[27]++;break;
    121                   case 'C':zimu[28]='C';count[28]++;break;
    122                   case 'D':zimu[29]='D';count[29]++;break;
    123                   case 'E':zimu[30]='E';count[30]++;break;
    124                   case 'F':zimu[31]='F';count[31]++;break;
    125                   case 'G':zimu[32]='G';count[32]++;break;
    126                   case 'H':zimu[33]='H';count[33]++;break;
    127                   case 'I':zimu[34]='I';count[34]++;break;
    128                   case 'J':zimu[35]='G';count[35]++;break;
    129                   case 'K':zimu[36]='K';count[36]++;break;
    130                   case 'L':zimu[37]='L';count[37]++;break;
    131                   case 'M':zimu[38]='M';count[38]++;break;
    132                   case 'N':zimu[39]='N';count[39]++;break;
    133                   case 'O':zimu[40]='O';count[40]++;break;
    134                   case 'P':zimu[41]='P';count[41]++;break;
    135                   case 'Q':zimu[42]='Q';count[42]++;break;
    136                   case 'R':zimu[43]='R';count[43]++;break;
    137                   case 'S':zimu[44]='S';count[44]++;break;
    138                   case 'T':zimu[45]='T';count[45]++;break;
    139                   case 'U':zimu[46]='U';count[46]++;break;
    140                   case 'V':zimu[47]='V';count[47]++;break;
    141                   case 'W':zimu[48]='W';count[48]++;break;
    142                   case 'X':zimu[49]='X';count[49]++;break;
    143                   case 'Y':zimu[50]='Y';count[50]++;break;
    144                   case 'Z':zimu[51]='Z';count[51]++;
    145                   }
    146              }    
    147              int ci=0;
    148              int sum=0;
    149              System.out.println("短文中各字母出现情况统计如下:");
    150              for(int i=0;i<52;i++)
    151              {
    152                  if(count[i]!=0) {
    153                      ci++;
    154                      sum+=count[i];
    155                      System.out.println(ci+".字母"+zimu[i]+"的出现次数是:"+count[i]);
    156                      }
    157              }   
    158              System.out.println("字母共计:"+sum+"个");
    159          }catch (Exception e) {
    160              e.printStackTrace();
    161          }
    162     }
    163     static void Quan()throws IOException
    164     {
    165           Word word=new Word();                                      //单词的链头
    166             Word lian,xin;                                             
    167             String str="";
    168             FileReader f=new FileReader("E:\o1.txt");                //读取英文文件
    169             char[] c=new char[1];                                 //每次读取一个字母
    170             int b=0;
    171             boolean exist=false;                              //判断单词是否存在于  word 链中
    172             while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后
    173             {
    174                 //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
    175                 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("'"))
    176                 {
    177                     lian=word;
    178                     while(lian!=null)            
    179                     {
    180                         if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
    181                         {
    182                             lian.geshu++;exist=true;break;
    183                         }
    184                         else
    185                         {
    186                             lian=lian.next;
    187                         }
    188                     }
    189                     if(exist==false)                        //如果不存在,则在单词链中添加
    190                     {
    191                         xin=new Word(str,1);
    192                         xin.next=word.next;
    193                         word.next=xin;
    194                         str="";
    195                     }
    196                     else
    197                     {
    198                         exist=false;
    199                         str="";
    200                     }
    201                 }
    202                 else                                      //单词
    203                 {
    204                     str+=String.valueOf(c);
    205                 }
    206             }
    207             int N=20;
    208             for(int i=1;i<=N;i++)                   
    209             {
    210                 xin=new Word("",0);
    211                 lian=word.next;
    212                 //找到单词链中个数最多的
    213                 while(lian!=null)
    214                 {
    215                     if(lian.geshu>xin.geshu)
    216                     {
    217                         xin=lian;
    218                     }
    219                     lian=lian.next;
    220                 }
    221                 //输出单词链中个数最多的
    222                 System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
    223                 lian=word;
    224                 //删除单词链中单词个数最多的
    225                 while(lian.next!=null)
    226                 {
    227                     if(lian.next.value.equalsIgnoreCase(xin.value))
    228                     {
    229                         lian.next=lian.next.next;
    230                         break;
    231                     }
    232                     lian=lian.next;
    233                 }
    234             }
    235         }
    236     static void Danci()throws IOException
    237     {
    238         Word word=new Word();                                      //单词的链头
    239         Word lian,xin;                                             
    240         String str="";
    241         FileReader f=new FileReader("E:\o1.txt");                //读取英文文件 
    242         char[] c=new char[1];                                 //每次读取一个字母
    243         int b=0;
    244         boolean exist=false;                              //判断单词是否存在于  word 链中
    245         while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后
    246         {
    247             //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
    248             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("'"))
    249             {
    250                 
    251                 lian=word;
    252                 while(lian!=null)            
    253                 {
    254 
    255                     if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
    256                     {
    257                         lian.geshu++;exist=true;break;
    258                     }
    259                     else
    260                     {
    261                         if(str.equals("a")||str.equals("the")||str.equals("and"))
    262                         {
    263                             break;
    264                         }
    265                         lian=lian.next;
    266                     }
    267                     
    268                 }
    269 
    270                 if(exist==false)                        //如果不存在,则在单词链中添加
    271                 {
    272                     xin=new Word(str,1);
    273                     xin.next=word.next;
    274                     word.next=xin;
    275                     str="";
    276                 }
    277                 else
    278                 {
    279                     exist=false;
    280                     str="";
    281                 }
    282             }
    283             else                                      //单词
    284             {
    285                 str+=String.valueOf(c);
    286             }
    287         }
    288      
    289         
    290         //   循环10次
    291         System.out.println("请输入您想查询的前几个出现此处最多的单词");
    292         Scanner scan=new Scanner(System.in);
    293         int N=scan.nextInt();
    294         for(int i=1;i<=N;i++)                   
    295         {
    296             lian=Word.next;
    297             xin=new Word("",0);
    298             lian=word.next;
    299             //找到单词链中个数最多的
    300             while(lian!=null)
    301             {
    302                 if(lian.geshu>xin.geshu)
    303                 {
    304                     xin=lian;
    305                 }
    306                 lian=lian.next;
    307             }
    308             //输出单词链中个数最多的
    309             System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
    310             lian=word;
    311             //删除单词链中单词个数最多的
    312             while(lian.next!=null)
    313             {
    314                 if(lian.next.value.equalsIgnoreCase(xin.value))
    315                 {
    316                     lian.next=lian.next.next;
    317                     break;
    318                 }
    319                 lian=lian.next;
    320             }
    321         }
    322     }
    323 
    324     }
  • 相关阅读:
    《高级软件测试》web测试实践--12月30日记录
    JUnit单元测试遇到的问题及解决思路
    静态代码检查报告
    召开小组评审会
    小组评审会前准备
    软工1701班06组白盒测试实践任务分配
    《高级软件测试》11.30.学习编写自动化测试脚本
    《高级软件测试》11.29.学习编写自动化测试脚本
    新博客
    Java中的NIO学习(一、缓冲区与Buffer)
  • 原文地址:https://www.cnblogs.com/zmh-980509/p/10989893.html
Copyright © 2011-2022 走看看