JAVA记录文件中单词的数量

Posted haheihei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA记录文件中单词的数量相关的知识,希望对你有一定的参考价值。

运行截图:

 

 实现代码:

 1 package Ape;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.File;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileReader;
 7 import java.io.IOException;
 8 import java.util.regex.Matcher;
 9 import java.util.regex.Pattern;
10 
11 public class CountPlus1 {
12 
13     public CountPlus1() {
14         // TODO Auto-generated constructor stub
15     }
16 
17     public static void main(String[] args) {
18         // TODO Auto-generated method stub
19         String temp=null;
20         Pattern pattern=Pattern.compile("[^a-zA-Z]");   //匹配非字母
21         Pattern pattern1=Pattern.compile("^[a-zA-Z]{3,}"); //剔除无意义单词如:is,a,at等
22         String []ape=new String[10000];   //存储单词
23         int []num=new int[10000];//存储数量
24         int count=0; //记录多少个不同的单词,即ape数组的长度
25         File filepath=new File("Harry Potter and the Sorcerer\'s Stone.txt");//导入文件
26         try {
27             FileReader reader=new FileReader(filepath);
28             BufferedReader br=new BufferedReader(reader);
29             try {
30                 while((temp=br.readLine())!=null)    //读取到结尾时停止
31                 {
32                     Matcher matcher=pattern.matcher(temp);  //匹配字符串
33                     if(matcher.find())
34                         temp=matcher.replaceAll(" ");    //替换字符串
35                     String str[]=temp.toLowerCase().trim().split(" ");    //分割字符串    
36                     if(str.length>0) {                               //如果字符串中有单词
37                         for(int j=0;j<str.length;j++) {
38                             Matcher matcher1=pattern1.matcher(str[j]);  //剔除无意义单词
39                             if(count==0) {
40                                 ape[count]=str[j];
41                                 num[count]++;
42                                 count++;
43                             }
44                             else if(matcher1.find()){   //进行计数
45                                 int tempnum=count;
46                                 for(int k=0;k<tempnum;k++) {
47                                     if(ape[k].equals(str[j]))
48                                         {
49                                             num[k]++;    
50                                             break;
51                                         }
52                                     else if(k==tempnum-1){
53                                         ape[count]=str[j];
54                                         num[count]++;
55                                         count++;
56                                     }
57                                 }
58                             }
59                         }
60                     }
61                 }        
62             } catch (IOException e) {
63                 // TODO Auto-generated catch block
64                 e.printStackTrace();
65             }
66         } catch (FileNotFoundException e) {
67             // TODO Auto-generated catch block
68             e.printStackTrace();
69         }
70         for(int i=0;i<count;i++)    //冒泡排序法实现倒序排序
71             for(int j=0;j<count-1-i;j++)
72             {
73                 int numtemp;
74                 String tempch;
75                 if(num[j]<num[j+1])
76                 {
77                     numtemp=num[j];num[j]=num[j+1];num[j+1]=numtemp;
78                     tempch=ape[j];ape[j]=ape[j+1];ape[j+1]=tempch;
79                 }
80             }
81         for(int i=0;i<count;i++) {     //输出单词以及对应数量
82             System.out.println(ape[i]+"   "+num[i]);
83         }
84     }
85 
86 }

 

以上是关于JAVA记录文件中单词的数量的主要内容,如果未能解决你的问题,请参考以下文章

编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。(代码片段

华为OD机试真题Java实现匿名信真题+解题思路+代码(2022&2023)

我的逻辑有啥问题?尝试计算文件中包含特定字符的单词数量

从搜索文档中查找最小片段的算法?

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

加载文本文档并根据重复单词的数量对它们进行排名的 Java 程序 - 不断获取文件未找到错误