• 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是缓冲流,虽然不是必须的,但是可以加快读取的速度。  

  • 相关阅读:
    5.scala中的对象
    4.scala中的类
    第八章 前端框架
    第六章 用户管理
    第五章 权限验证
    第四章 功能初始化
    第三章 项目结构
    第二章 基于二进制进行权限管理的理论知识
    第一章 权限管理DEMO简介
    NopCommerce源代码分析之用户验证和权限管理
  • 原文地址:https://www.cnblogs.com/suanai/p/11795114.html
Copyright © 2020-2023  润新知