基于java:读写一个英文的txt文件,记录单词个数,并输出十个出现最多的单词及出现的个数;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- class Word //定义单词类
- {
- String value; //具体的单词
- int geshu; //出现的个数
- Word next; //将单词链起来
- public Word(String value,int geshu) //带参构造函数
- {
- this.value=value;
- this.geshu=geshu;
- next=null;
- }
- public Word() //空构造函数
- {
- this.value="";
- this.geshu=0;
- next=null;
- }
- }
- public class r {
- public static void main(String args[]) throws IOException //主函数
- {
- Word word=new Word(); //单词的链头
- Word lian,xin;
- String str="";
- FileReader f=new FileReader("d:/text.txt"); //读取英文文件
- char[] c=new char[1]; //每次读取一个字母
- int b=0;
- boolean exist=false; //判断单词是否存在于 word 链中
- while((b=f.read(c))!=-1) //每次读取一个字母直到最后
- {
- //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始
- if(String.valueOf(c).equals("\r")||String.valueOf(c).equals("\n")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals("\"")||String.valueOf(c).equals("'"))
- {
- lian=word;
- while(lian!=null)
- {
- if(lian.value.equalsIgnoreCase(str)) //如果单词在单词链中存在,则单词个数++
- {
- lian.geshu++;exist=true;break;
- }
- else
- {
- lian=lian.next;
- }
- }
- if(exist==false) //如果不存在,则在单词链中添加
- {
- xin=new Word(str,1);
- xin.next=word.next;
- word.next=xin;
- str="";
- }
- else
- {
- exist=false;
- str="";
- }
- }
- else //单词
- {
- str+=String.valueOf(c);
- }
- }
- // 循环10次
- for(int i=1;i<=10;i++)
- {
- xin=new Word("",0);
- lian=word.next;
- //找到单词链中个数最多的
- while(lian!=null)
- {
- if(lian.geshu>xin.geshu)
- {
- xin=lian;
- }
- lian=lian.next;
- }
- //输出单词链中个数最多的
- System.out.println("弟"+i+"个 :"+xin.value+"个数:"+xin.geshu);
- lian=word;
- //删除单词链中单词个数最多的
- while(lian.next!=null)
- {
- if(lian.next.value.equalsIgnoreCase(xin.value))
- {
- lian.next=lian.next.next;
- break;
- }
- lian=lian.next;
- }
- }
- }
- }
思路:读写文件,
运用链表思想
通过空格、换行等字符设为单词的区分
每次通过遍历链表来查询链表中该单词是否已经存在
若存在,则单词个数加1;否则,在链表中添加此新单词
直到将文件读取完
查询次数最多的单词时
查询一个,则将此时最多的那个单词从链表中删除- 注意:1、链表通过 类中的对象成员来链接
2、注意文本的换行为\r\t
3、注意判断单词是否存在时的处理
4、注意读写文件部分
基于java:读写一个英文的txt文件,记录单词个数,并输出十个出现最多的单词及出现的个数;的更多相关文章
- 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...
- java将数据写入到txt文件中(txt有固定的格式)
java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我 ...
- java存储数据到本地txt文件中
java存储数据,方便打印日志等 1.会覆盖以前的数据 try { File writeName = new File("D:\\data.txt"); // 相对路径,如果没有则 ...
- 关于Java里面File类创建txt文件重复???
private JButton getOpenButton() { if (openButton == null) { openButton = new JButton(); openButton.s ...
- Java导出List集合到txt文件中——(四)
有时候,需要将数据以一定格式导出到txt文件中.利用Java的IO可以轻松的导出数据到txt中. package Action.txt; import java.io.BufferedWriter; ...
- Java读写hdfs上的avro文件
1.通过Java往hdfs写avro文件 import java.io.File; import java.io.IOException; import java.io.OutputStream; i ...
- Java使用IO流读取TXT文件
通过BufferedReader读取TXT文件window系统默认的编码是GBK,而IDE的编码多数为UTF-8,如果没有规定new InputStreamReader(new FileInputSt ...
- 文件内容统计:对任意给定的.txt文件进行内容的字符数、行数、单词数进行统计
项目源码地址:https://gitee.com/xjtsh/projects 功能实现: wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file ...
- 基于Java语言的IO操作(文件复制)
public static void main(String[] args) { //获取复制开始前系统时间毫秒值 long start=System.currentTimeMillis(); //文 ...
随机推荐
- Letter Combinations of a Phone Number:深度优先和广度优先两种解法
Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...
- hdu 2157 How many ways?? (可达矩阵)
题意:给你一个有向图,从A 点到 B点恰好经过k个点的方案数 (k < 20), 可以走重复边 思路:利用离散数学中的可达矩阵,可达矩阵的K次幂便是从i到j走K步能到达的方案数 代码: #inc ...
- javascript执行顺序小结
作为web开发人员,一定要对js的执行顺序,解析原理有一定了解,否则无法掌控这门小巧好用的语言 javascript是一门实现网页动态效果的语言,也是主要负责和服务端的交互,他抛弃了像java中类的束 ...
- 使用FSharp 探索Dotnet图像处理功能2--均衡灰度
重新捡起大学里的图像处理,好像之前什么都没学到,但是我为什么还留着这本书呢?嘿嘿. 看到均衡灰度处理,上来就是积分,概率分布的公式,头微微的有点疼.网上看了点介绍,隔天再拿起书本,总算有了点眉目.简而 ...
- 在ASP.NET MVC4中配置Castle
---恢复内容开始--- Castle是针对.NET平台的一个非常优秀的开源项目,重点是开源的哦.它在NHibernate的基础上进一步封装,其原理基本与NHibernate相同,但它较好地解决NHi ...
- sublime-text-3设置输入中文方法
sublime-text-3 编辑器性感而敏捷,却让人感慨有其长必有其短. 有些缺点都可以通过插件解决.但是要解决输入中文问题却很复杂,不能输入中文实在是太痛苦了. 我在做一个有很多文字的html页面 ...
- Reids详解-抄本
1.redis是什么 Redis 是一个基于内存的高性能key-value数据库.是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库. 2.redis的特点 ...
- ESLint系列:ESLint入门安装及简单配置
1.eslint需要依赖node.js环境,在配置之前需要安装好node.js; 2.npm install eslint --save-dev 或 npm install eslint --save ...
- jquery分页插件的修改
前言 最近分页功能使用的比较多,所以从网上下载个jquery分页插件来使用, 之前用的都挺好的,直到昨天出现了逻辑问题,反复查看自己的代码,最后发现是点击页码后执行了多个点击事件.最后只有自己查看源码 ...
- 深入浅出node.js
http://www.infoq.com/cn/articles/what-is-nodejs/