设计统计英文字母出现频率的程序的感想

  今天下午我们在学习Java的过程中,王老师给我们留下了一个程序设计作业,其要求是让我们设计一个程序,要实现 输出单个文件中的前 N 个最常出现的英语单词,并将结果输入到文本文件中的功能。我思考并上机了一个下午最终实现了部分功能。

  首先当看到这个题目的时候,我想到了将这个实验分成三部分:

  1.读取指定文本的内容;

  2.统计所有单词在该文本中的出现次数;

  3.将结果输入到指定文本。

  经过下午上机的努力,我仅仅实现了第一个功能。后来经过求助我的舍友,完成了第二个功能。第三个功能尚未实现。

  实验源码如下:

  

package yingwen;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class yingwen {
 private int num[]=new int[52];
 public void readTxt(String filePath) {
  try {
   File file = new File(filePath);
   if(file.isFile() && file.exists()) {
    InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
    while(isr.ready())
    {
     char c=(char)isr.read();
     if(c>='a'&&c<='z')
     {
      ++num[(int)(c-'a')];
     }
     else if(c>='A'&&c<='Z')
     {
      ++num[(int)(c-'A')];
     }
    }
    isr.close();
   } else {
    System.out.println("文件不存在!");
   }
  } catch (Exception e) {
   System.out.println("文件读取错误!");
  }
 }
 public int[] num1()
 {
  return num;
 }
 public static void main(String[] args) {
  String filePath = "E:\\Yingwen\\English.txt";
  yingwen a=new yingwen();
  a.readTxt(filePath);
  int num[]=a.num1();
  for(int i=0;i<52;i++)
  {
   if(i<=25)
    System.out.println((char)(i+'a')+" "+num[i]);
   else System.out.println((char)(i+'A'-26)+" "+num[i]);
  }
 }
}

 

posted @ 2018-10-11 22:00  *尹天仇  阅读(262)  评论(0编辑  收藏  举报