统计英文文章单词出现的频率

package 统计英文字母出现频率;
import java.io.*;
import java.io.File.*;
import java.util.Scanner;
public class Collect {
  public static void readFileByChars(String fileName) {
         File file = new File(fileName);
         Reader reader = null;
         try {
          char [] value = new char[20];
          int [] amount = new int[20];
          for(int i = 0; i< 20;i++)
          { amount[i] = 0;}
          
             reader = new InputStreamReader(new FileInputStream(file));
             for(int i = 0;i < 20 ;i++)               
               {value[i] = (char) reader.read();}
            
             for(int j = 0 ;j < 20 ;j ++)
             {
              for(int k = j+1 ; k < 20 ; k++) {
               if(value[k]==value[j]){
                amount[j]++;
               }
               else if(value[j]==value[j+1]) {
                j++;break;
               }
               else break;
              }
             }
             int temp=0;
             for(int i = 0;i < 20;i++)
             {
              for(int j = i+1 ; j < 20 ; j ++) {
               if(amount[j]>amount[i]) {
                temp = j;
               }
               else temp = i;
              }
             }
      
             System.out.println("出现最多次数的字母:"+value[temp]+"其出现的次数:"+amount[temp]);  
             reader.close(); 
         } catch (Exception e) {
             e.printStackTrace();//抛异常
         }
        
  }
  public static void main(String args[]) {
   readFileByChars("file.txt");
  }
 
 
存在的很大问题,对于读写文件,查了半天资料也刚刚了解,在网上找到了一段读取文件的代码,勉强看得懂。可以实现一个个字符保存到value数组中,但是对于重复的字符没有筛选功能,所以只能够实现统计单词出现的次数。但是对于重复的字符没有筛选功能,字符数组建多大也一直迷糊。至于出现的频率,我用amoun数组实现,但是存在一点小小的问题。对于数组的比较本来是一个很简单的循环问题,但是在这里不知道为什么实现的很慢,而且思维比较混乱。在这个程序的编写中,还向以往那样,没有模块化,没有用类来实现,还是用了一抹都在主函数里边实现,对于for循环语句用的次数太多,导致代码太复杂,运行很复杂。对于文件的操作这一块的内容,课后还要狠狠的下功夫,真是书到用时方恨少啊,代码到用时才发现自己什么都不会

猜你喜欢

转载自www.cnblogs.com/zjl-0217/p/9775013.html