统计单词频率

今天主要学习了部分文件输入输出的内容如下:

(1)类型.valueOf()是将括号中的参数转化为该类型(2)字节输入输出流:FileInputStream是InputStream的子类,是操作文件的字节输入流,BufferedInputStream是自带缓冲区的流,即内部含有一个大小为8192的字节数组,当用read()方法读入数据时,首先将读写的数据存入定义好的数组,然后一次性进行操作,与缓冲区类似,可以有效地提高数据的读入效率。输出与之相同。BufferedInputStream与FileInputStream还有一点不同,FileInputStream的构造方法是接受文件名或者file类型的参数作为被包装对象,而前者是接受后者类型的参数作为被包装对象。判断是否读取到文件末尾的方法:当FileInputStream或BufferedInputStream对象名.read()=-1时,表示已经读取到文件末尾。(3)JAVA中字符串比较equals()和equalsIgnoreCase()的区别:前者对字符串的比较需要区分大小写,而后者不区分。

对于今天的实验,有以下思路:

(1)首先读入文件,将所有的字符读入到一个字符数组中。

(2)将字符串数组单词字符串数组。

(3)对字符串数组中的元素进行比较,并且对相同元素的个数,每一个不同的元素进行记录,最后将结果输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<br>package main;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class txt2{
    public static void main(String[] args) throws Exception
    {  
        File file = new File("D:\\Android\\软件工程作业\\src\\ENGl.txt");//导入txt文档
        FileReader reader = new FileReader(file);
        int fileLen = (int)file.length();
        char[] chars = new char[fileLen];
        reader.read(chars);
        String txt = String.valueOf(chars);
        String[] a=txt.split("[^a-zA-Z]+");   //利用正则表达式将字符串划分为单词字符串数组
        int n=a.length;//获取文章中单词个数
        int nind=0,wind=0//nind表示文章中的不同单词个数,初始值为0,wind代表文章中总的单词数
        Object[][] b=new Object[n][2];
        for(;wind<n;wind++){
            int k=0; //用k标记单词是否已经出现,单词已经出现,在已存数组中匹配,若匹配则相应单词数目加1
            for(int i=0;i<nind;i++){
                if(((String) b[i][0]).equalsIgnoreCase(a[wind])){
                    b[i][1]=(int)b[i][1]+1;
                    k=1;
                    break;
                }
            }
            //单词未出现则在记录数组末尾记录此单词
            if(k==0){
                b[nind][0]=a[wind];
                b[nind][1]=1;
                nind++;
            }
        }
        BufferedReader br1=new BufferedReader(new FileReader("D:\\Android\\软件工程作业\\src\\particle.txt"));//字符输入流 从文件读
        String str=br1.readLine();
        String[] arg=str.split("[^a-zA-Z]+");   //利用正则表达式将字符串划分为单词字符串数组
        int m=arg.length;
        //判断文章中词语是否为虚词,如果为虚词则在比较频率时不计较在内
        for(int i=0;i<nind;i++){
            for(int j=0;j<m;j++ ){
                if(((String) b[i][0]).equalsIgnoreCase(arg[j])){
                    b[i][1]=0;
                }
            }
        }
        for(int i=0;i<10;i++){
            int max=0;
            for(int j=0;j<nind;j++){
                if((int)b[j][1]>(int)b[max][1]){
                    max=j;
                }
            }
            System.out.println(b[max][0]+"出现次数为:"+b[max][1]);
            b[max][1]=0;
        }
    }
}

  

posted on   宥宁  阅读(177)  评论(0编辑  收藏  举报

努力加载评论中...

导航

点击右上角即可分享
微信分享提示