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 }

原文地址:https://www.cnblogs.com/haheihei/p/11801532.html

时间: 2024-10-15 11:09:44

JAVA记录文件中单词的数量的相关文章

简单的方法来统计文件中单词和各种标点符号个数

此小程序使用最基本的方法来统计文本中英文单词的个数,想法也比较简单: (1)从文本中文本读取内容,使用BufferedReader类每次读取一行并添加到StringBuffer类型变量中, 最后StringBuffer类型变量即为文本的内容,如StringBuffer sb: (2)把sb的内容全部转化成小写字母(或大写字母): (3)统计文件中各种标点符号个数: (4)把所有标点符号统一替换成一种标点符号,如替换成逗号 (5)替换后的文本使用字符串的分割函数来获取返回的字符串数组的长度,此长度

Java入门-类HelloWorld是公共的,应在名为HelloWorld.java的文件中声明

开始学习java了,搭好环境,notepad++中新建一个java文件,新建一个HelloWorld类, public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 保存文件时取名firstjava.java,然后进入命令行开始编译,然而编译时却出现一个错误,“类HelloWorld是公共的,应在名为HelloWorld.java的文

错误: 类Something是公共的, 应在名为 Something.java 的文件中声明

Java编译报错: 错误: 类Something是公共的, 应在名为 Something.java 的文件中声明 如下图所示: 第一种解释:"类A是公共的,应在名为 A.java 的文件中声明"这句话需要分两步来理解: 1.在Java中,如果类A被声明为公共的(public),那么必须将类A保存在名为 A.java的文件中: 2.反之,在一个Xxx.java的文件中最多包含一个顶级的公共类,并且该公共类的名字要与文件名相同.比如文件A.java中,允许定义一个或多个类,但最多允许一个顶

使用jmeter往指定文件中插入一定数量的数据(转)

有一个需求,新建一批账号,把获取的账号相关信息存入文本文件,当文本文件保存的数据达到一定的数量,就自动停止新建账号. 分析下需求: 1.把账号信息保存到文件,需要使用bean shell脚本(bean shell脚本语法和java一样,功能也一样),并且需往脚本中传入要保存的信息 2.文件中保存的数据达到一定的数量,就自动停止新建账号.数量也是要用bean shell脚本读文件获取文件行数,并传出.自动停止新建脚本,这就需要加个jmeter的if控制器,在if控制器的条件中判断数量是否达到. 脚

统计文件中单词的频率,给出前N的单词

package test10; import java.io.*; import java.util.*; import java.util.Map.Entry; public class Frequency { public static int n=0;// public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s; int count=0; int num=1; //作为File

Java - 从文件中读入字符串和整数

想平时写 C++ 时,从文件中按指定格式读入数据多方便.. 给自己写个 Java 的.. package lib.com.chalex.www; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; /** * @author

Java对文件中的对象进行存取

1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Object obj) { File file =new File("test.dat"); FileOutputStream out; try { out = new FileOutputStream(file); ObjectOutputStream objOut=new ObjectOutp

java 一个文件中写多个class

一个java文件中可以包含多个类,但这些类中一个特殊类,这个类的属性为public,且这个类的名字与文件名相同,java文件中仅有一个类为public. interface Moveable { void run(); } //具体产品角色 class Plane implements Moveable { @Override public void run() { System.out.println("plane...."); } } class Broom implements

Java propertis文件中组装配置

目的: 实现在配置文件中,进行组装 1.Properties文件配置如下: dns=http://211.103.227.133:8080 qrcode=${dns}/wx/views/invite/register.html 类似域名和公共的东西,希望在properties文件中直接进行组装,而不是在代码中进行组装 2.使用spring注解 @Value注解 注意:图中使用@Service或 @Component,并且@Value必须写在set属性上,否则取不到值 输出结果为: http://