2019年11月4日课堂测试,文本读入统计单词数2

一、题目

 

 二、源代码

import java.io.*;
import java.util.*;


public class ReadWord2 {
    private static String str1;
    private static String [] Str=new String[20000];
    private static int [] n=new int [20000];
    
    public static void main(String [] args) throws IOException {
        int num=0,i=0,j=0;
        double sum=0;
        Scanner input =new Scanner(System.in);
        
        File file =new File("src/Harry.txt");
        
        String get=null;
        BufferedReader reader =new BufferedReader(new FileReader(file));
        while((get=reader.readLine())!=null) {
            
            StringTokenizer sc =new StringTokenizer(get,",.?''\" -"); 
            while(sc.hasMoreElements()) {
                str1=(String)sc.nextElement();
                str1=str1.toLowerCase();
                for(i=0;i<=num;i++) {
                    if(str1.equals(Str[i])) {
                        n[i]++;
                        break;
                    }
                }
                if(i>num) {
                    Str[num]=str1;
                    n[num]=1;
                    num++;
                }
            }
        }
        
        for(i=0;i<num;i++) {
            for(j=i;j<num;j++) {
                if(n[i]<n[j]) {
                    int temp=n[i];
                    n[i]=n[j];
                    n[j]=temp;
                    String tp=Str[i];
                    Str[i]=Str[j];
                    Str[j]=tp;
                }
                
            }
        }
        i=0;
        while(n[i]!=0) {
            sum+=n[i];
            i++;
        }
        System.out.println("单词总数为"+sum);
        System.out.println("请输入你想要查询的数量前几的单词数");
        int N=input.nextInt();
        for(i=0;i<N;i++) {
            System.out.print("第"+(i+1)+"多的单词是      "+Str[i]+"  共  "+n[i]+"  个  ");
            System.out.print("占全部单词的");
            System.out.printf("%.2f",n[i]*100/sum);
            System.out.println("%");
        }
        
        
    }
    
    
    
    
    
}

三、心得

  刚开始真是一点思路也没有,因为需要将从文件中把每一个单词分出来,这个是我当时头疼的地方。然后之后借鉴别人的代码发现了一个很棒的方法 StingTokenizer,可以将一个字符串按照自定义的符号分割成字符串,然后存储。然后还学到了BufferedReader是缓冲流,虽然不是必须的,但是可以加快读取的速度。  

 

posted @ 2019-11-04 21:46  酸奶面包  阅读(134)  评论(0编辑  收藏  举报