zoukankan      html  css  js  c++  java
  • 统计英语文章中单词

        这个程序目的在于要将文本中的单词进行录入,同事其中的标点符号要进行舍去,在开始的时候我用Scanner了进行输入,对每个字符串进行录入,先不考虑标点符号的问题,在进行将标点符号的舍去的时候遇到了一些问题,开始我想通过转换为字符数组来进行割舍,遇到了很多问题:数组长度不确定的问题,又通过上网查阅资料知道了java的数组不和c、c++一样有终止字符,java没有这样的终止字符。所以在最后我想起了java中可以截取子字符串,通过对标点符号位置的记录,再用substing来提取子字符串再来储存到类数组中进行比较,记录。

    下面是原代码:

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.nio.file.Paths;
    import java.util.Scanner;
    
    public class Scend10_11 {
    
        public static void main(String[] args) throws IOException {
            FindWord [] word;
            word=new FindWord [100];
            word[0]=new FindWord();
            word[0].input(word);
            word[0].show(word);
            word[0].outfile(word);
        }
        
    }
    class FindWord{
        private String word;               //单词
        private int num;                   //单词次数
        FindWord(){
            word=null;
            num=1;
        }
        
        public String getWord() {
            return word;
        }
        public void setWord(String word) {
            this.word = word;
        }
        public int getNum() {
            return num;
        }
        public void setNum(int num) {
            this.num = num;
        }
        void addnum() {
            num++;
        }
        void outfile(FindWord word[])throws IOException{                               //将结果输出到文件中
            PrintWriter out =new PrintWriter ("WordTimes.txt");
            int i=0;
            for(i=1;i<100;i++) {
                if(word[i]!=null) {
                    out.println(word[i].getWord()+"	"+word[i].getNum());
                }
            }
            out.flush();
            out.close();
        }
        void input(FindWord word[]) throws IOException{                                //将文件录入并进行标点符号舍去
            Scanner in = new Scanner(Paths.get("word.txt"));
            String k;
            while(in.hasNextLine()) {
                String s=in.next();
                compare(s,word);                                                 //标点符号的舍去以及对单词额比较和录入方法的电泳
                
            }
        }
        private void compare(String str1,FindWord word[]) {
            int j=0;
            boolean f=false;
            char s1[]=str1.toCharArray();
            for(int i=0;i<str1.length();i++) {
                if((s1[i]>=65&&s1[i]<=90)||(s1[i]>=97&&s1[i]<=122));
                else {j=i;f=true;}
            }
            if(f==true) {
                if(j==str1.length()-1)change(str1.substring(0,j),word);
                else{change(str1.substring(0, j),word);
                change(str1.substring(j+1, str1.length()),word);
                }
            }
            else change(str1,word);                                                  //调用change
        }
    
        private void change(String s, FindWord word[]) {                               //比较单词相同以及储存
            int j;
            boolean bo=false;
            for(j=0;word[j]!=null;j++) {
                if(word[j].getWord()!=null&&s.compareTo(word[j].getWord())==0) {
                    word[j].addnum();
                    bo=true;
                    break;
                }
                bo=false;
            }
            if(bo==false) {
                word[j]=new FindWord();
                word[j].setWord(s);
                word[j].setNum(1);
            }        
        }
        public void show(FindWord[] word2) {                                             //输出结果
            int i=0;
            for(i=1;i<100;i++) {
                if(word2[i]!=null) {
                    System.out.println(word2[i].getWord()+"	"+word2[i].getNum());
                }
            }
            
        }
    }

    这个程序我并没有将最后的结果进行排序操作,这项操作以后将会修改这个程序。

  • 相关阅读:
    HDU 4825 字典树
    HDU4287 字典树
    HDU 3973 AC's String 字符串哈希
    HDU5296 Annoying problem(LCA)
    Gym 100712L Alternating Strings II(单调队列)
    数据结构专题
    HDU5033 Building(单调栈)
    HDU2888 Check Corners(二维RMQ)
    HDU 4123 Bob’s Race(RMQ)
    HDU3530 Subsequence(单调队列)
  • 原文地址:https://www.cnblogs.com/huan-ch/p/9775462.html
Copyright © 2011-2022 走看看