课堂测试,统计小说<飘>前N个最常出现的单词

  思路:这道题设计文件知识,但自己还没有学到文件,所有自己在网上查了一些知识。

             1、首先是将飘的英文原文放到文本文件中,一行一行读入。(因为不涉及大小写,所有用了toLowerCase()方法)

             2、若有‘ ’,‘,’,‘。’等标点,则将之前的字符组成单词,并判断之前字符串数组是否有这个单词,若有则个数加1,没有则在字符串数组后新加,然后个数加1.直到读完。

             3、给字符串数组和个数数组排序,按照选择排序;

            4、在文本文件里输出前N个最常出现的单词

代码:

 1 package com.javaclass2;
 2 import java.io.File;  
 3 import java.io.InputStreamReader;
 4 import java.util.Scanner;
 5 import java.util.StringTokenizer;
 6 import java.io.BufferedReader;  
 7 import java.io.BufferedWriter;  
 8 import java.io.FileInputStream;
 9 import java.io.FileNotFoundException;
10 import java.io.FileReader;
11 import java.io.FileWriter; 
12 public class TestText {
13     static int num=0,a=0;
14     static String word[]=new String[1000000];
15     static int wordnum[]=new int[1000000];
16     public static void main(String args[]) {
17         Scanner scanner = new Scanner(System.in);
18         System.out.println("请输入n(n为前n个最长出现的单词个数):");
19         int n=scanner.nextInt();
20         try{
21             String path = "C:/Users/MACHENIKE/Desktop/飘英文版.txt";
22             File file = new File(path);    
23             InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
24             BufferedReader br = new BufferedReader(new FileReader(file));
25             File file2 = new File("C:/Users/MACHENIKE/Desktop/飘.txt");
26             file2.createNewFile();
27             BufferedWriter out = new BufferedWriter(new FileWriter(file2));
28             String s="";
29             s=br.readLine();
30             while(s!=null) {
31                 s=s.toLowerCase();// 大写转小写
32                 StringTokenizer st = new StringTokenizer(s," .,?;!
:“”‘: ");
33                while(st.hasMoreElements()) {
34                String str =(String)st.nextElement();
35                 for(int j=0;j<num;j++) {
36                     if(str.equals(word[j])) {
37                         wordnum[j]++;
38                         }else a++;
39                     }
40                 if(a==num) {
41                     word[num]=str;
42                     wordnum[num]++;
43                     num++;
44                     }
45                 a=0;
46                 }
47                s=br.readLine();
48             }
49             for(int i=0;i<num;i++) {
50                 for(int j=i+1;j<num;j++) {
51                     if(wordnum[j]>wordnum[i]) {
52                         int temp=wordnum[i];
53                         wordnum[i]=wordnum[j];
54                         wordnum[j]=temp;
55                         String Temp=word[i];
56                         word[i]=word[j];
57                         word[j]=Temp;
58                     }
59                 }
60             }
61             for(int i=0;i<n;i++) {
62                 System.out.println(word[i]);
63             }
64             for(int i=0;i<n;i++) {
65                 out.write(i+":"+word[i]+" ");
66                 out.flush();    
67             }
68             out.close();
69             }catch(Exception e){
70                 e.printStackTrace();
71                 }
72     }
73     
74 }

运行结果:

  

    文件还有好多不懂,还有多练习多学习。

  如果有错误或者更好的办法,请留言提出,感谢!!!

原文地址:https://www.cnblogs.com/yangxiao-/p/11603102.html