zoukankan      html  css  js  c++  java
  • 单词统计(续)

    package fengzhuang;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    
        class Word
        {
            String value;
            int geshu;
            static Word next;
            public Word(String value,int geshu)
            {
                this.value=value;
                this.geshu=geshu;
                next=null;
            }
            public Word()
            {
                this.value="";
                this.geshu=0;
                next=null;
            }
        }
        public class Ceshi {
        public static void main(String[] args) {
            System.out.println("请输入您想完成的功能:");
            int i=0;
        for(int n=1;n<10;n++)
            {System.out.println("1:统计字母;2:统计单词;3:指定单词");
    
            Scanner scan=new Scanner(System.in);
            i=scan.nextInt();
            if(i==1)
            {
                Zimu();
            }
            if(i==2)
            {
                try {
                    Quan();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(i==3)
            {
                try {
                    Danci();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        System.out.println("是否退出 退出0,不退出-其他");
        n=scan.nextInt();
        if(n==0)
        {
            break;
        }
            }
        }
        static void Zimu()
        {
             try {
                 char shu[] = new char[10000000];
                 char zimu[] = new char[52];
                 int j=0;
                 int count[]=new int[52];
                 String pathname="E:\o1.txt";
                 File filename=new File(pathname);
                 InputStreamReader reader=new InputStreamReader(new FileInputStream(filename));
                 BufferedReader br=new BufferedReader(reader);
                 String line[]=new String[100];;
                 for(int i=0;i<line.length;i++){
                 line[i]=br.readLine();
                 }
                 br.close();
                 int k=0;
                  while(line[k]!=null) {
                      for(int i=0;i<line[k].length();i++) {
                           shu[j]=line[k].charAt(i);
                           j++;
                      }
                      k++;
                 }
                 for(int i=0;i<shu.length;i++) {
                      switch(shu[i]) {
                      case 'a':zimu[0]='a';count[0]++;break;
                      case 'b':zimu[1]='b';count[1]++;break;
                      case 'c':zimu[2]='c';count[2]++;break;
                      case 'd':zimu[3]='d';count[3]++;break;
                      case 'e':zimu[4]='e';count[4]++;break;
                      case 'f':zimu[5]='f';count[5]++;break;
                      case 'g':zimu[6]='g';count[6]++;break;
                      case 'h':zimu[7]='h';count[7]++;break;
                      case 'i':zimu[8]='i';count[8]++;break;
                      case 'j':zimu[9]='j';count[9]++;break;
                      case 'k':zimu[10]='k';count[10]++;break;
                      case 'l':zimu[11]='l';count[11]++;break;
                      case 'm':zimu[12]='m';count[12]++;break;
                      case 'n':zimu[13]='n';count[13]++;break;
                      case 'o':zimu[14]='o';count[14]++;break;
                      case 'p':zimu[15]='p';count[15]++;break;
                      case 'q':zimu[16]='q';count[16]++;break;
                      case 'r':zimu[17]='r';count[17]++;break;
                      case 's':zimu[18]='s';count[18]++;break;
                      case 't':zimu[19]='t';count[19]++;break;
                      case 'u':zimu[20]='u';count[20]++;break;
                      case 'v':zimu[21]='v';count[21]++;break;
                      case 'w':zimu[22]='w';count[22]++;break;
                      case 'x':zimu[23]='x';count[23]++;break;
                      case 'y':zimu[24]='y';count[24]++;break;
                      case 'z':zimu[25]='z';count[25]++;break;
                      case 'A':zimu[26]='A';count[26]++;break;
                      case 'B':zimu[27]='B';count[27]++;break;
                      case 'C':zimu[28]='C';count[28]++;break;
                      case 'D':zimu[29]='D';count[29]++;break;
                      case 'E':zimu[30]='E';count[30]++;break;
                      case 'F':zimu[31]='F';count[31]++;break;
                      case 'G':zimu[32]='G';count[32]++;break;
                      case 'H':zimu[33]='H';count[33]++;break;
                      case 'I':zimu[34]='I';count[34]++;break;
                      case 'J':zimu[35]='G';count[35]++;break;
                      case 'K':zimu[36]='K';count[36]++;break;
                      case 'L':zimu[37]='L';count[37]++;break;
                      case 'M':zimu[38]='M';count[38]++;break;
                      case 'N':zimu[39]='N';count[39]++;break;
                      case 'O':zimu[40]='O';count[40]++;break;
                      case 'P':zimu[41]='P';count[41]++;break;
                      case 'Q':zimu[42]='Q';count[42]++;break;
                      case 'R':zimu[43]='R';count[43]++;break;
                      case 'S':zimu[44]='S';count[44]++;break;
                      case 'T':zimu[45]='T';count[45]++;break;
                      case 'U':zimu[46]='U';count[46]++;break;
                      case 'V':zimu[47]='V';count[47]++;break;
                      case 'W':zimu[48]='W';count[48]++;break;
                      case 'X':zimu[49]='X';count[49]++;break;
                      case 'Y':zimu[50]='Y';count[50]++;break;
                      case 'Z':zimu[51]='Z';count[51]++;
                      }
                 }
                 int ci=0;
                 int sum=0;
                 System.out.println("短文中各字母出现情况统计如下:");
                 for(int i=0;i<52;i++)
                 {
                     if(count[i]!=0) {
                         ci++;
                         sum+=count[i];
                         System.out.println(ci+".字母"+zimu[i]+"的出现次数是:"+count[i]);
                         }
                 }
                 System.out.println("字母共计:"+sum+"");
             }catch (Exception e) {
                 e.printStackTrace();
             }
        }
        static void Quan()throws IOException
        {
              Word word=new Word();                                      //单词的链头
                Word lian,xin;
                String str="";
                FileReader f=new FileReader("E:\o1.txt");                //读取英文文件
                char[] c=new char[1];                                 //每次读取一个字母
                int b=0;
                boolean exist=false;                              //判断单词是否存在于  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(".")||String.valueOf(c).equals(""")||String.valueOf(c).equals("'"))
                    {
                        lian=word;
                        while(lian!=null)
                        {
                            if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
                            {
                                lian.geshu++;exist=true;break;
                            }
                            else
                            {
                                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);
                    }
                }
                int N=20;
                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;
                    }
                }
            }
        static void Danci()throws IOException
        {
            Word word=new Word();                                      //单词的链头
            Word lian,xin;
            String str="";
            FileReader f=new FileReader("E:\o1.txt");                //读取英文文件
            char[] c=new char[1];                                 //每次读取一个字母
            int b=0;
            boolean exist=false;                              //判断单词是否存在于  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(".")||String.valueOf(c).equals(""")||String.valueOf(c).equals("'"))
                {
    
                    lian=word;
                    while(lian!=null)
                    {
    
                        if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
                        {
                            lian.geshu++;exist=true;break;
                        }
                        else
                        {
                            if(str.equals("a")||str.equals("the")||str.equals("and"))
                            {
                                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++)
            {
                lian=Word.next;
                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;
                }
            }
        }
    
        }
  • 相关阅读:
    SQL最小 最大时间 查询
    Linq Except,Distinct,Left Join
    Js 刷新页面
    olgaInteractive Shape Modeling(0)
    olgaInteractive Shape Modeling(1):classmaterials
    olgaInteractive Shape Modeling(1):classmaterials:Shape Creation and Deformation
    olgaInteractive Shape Modeling(2):related papers
    计算机内部如何存储数据,关于源码、补码的问题!
    sprintf用法解析
    堆与栈有什么区别?
  • 原文地址:https://www.cnblogs.com/fengjingfei/p/13062281.html
Copyright © 2011-2022 走看看