1. import java.io.FileNotFoundException;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4.  
  5. class Word //定义单词类
  6. {
  7. String value; //具体的单词
  8. int geshu; //出现的个数
  9. Word next; //将单词链起来
  10. public Word(String value,int geshu) //带参构造函数
  11. {
  12. this.value=value;
  13. this.geshu=geshu;
  14. next=null;
  15. }
  16. public Word() //空构造函数
  17. {
  18. this.value="";
  19. this.geshu=0;
  20. next=null;
  21. }
  22. }
  23. public class r {
  24. public static void main(String args[]) throws IOException //主函数
  25. {
  26. Word word=new Word(); //单词的链头
  27. Word lian,xin;
  28. String str="";
  29. FileReader f=new FileReader("d:/text.txt"); //读取英文文件
  30. char[] c=new char[1]; //每次读取一个字母
  31. int b=0;
  32. boolean exist=false; //判断单词是否存在于 word 链中
  33. while((b=f.read(c))!=-1) //每次读取一个字母直到最后
  34. {
  35. //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始
  36. 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("'"))
  37. {
  38. lian=word;
  39. while(lian!=null)
  40. {
  41. if(lian.value.equalsIgnoreCase(str)) //如果单词在单词链中存在,则单词个数++
  42. {
  43. lian.geshu++;exist=true;break;
  44. }
  45. else
  46. {
  47. lian=lian.next;
  48. }
  49. }
  50. if(exist==false) //如果不存在,则在单词链中添加
  51. {
  52. xin=new Word(str,1);
  53. xin.next=word.next;
  54. word.next=xin;
  55. str="";
  56. }
  57. else
  58. {
  59. exist=false;
  60. str="";
  61. }
  62. }
  63. else //单词
  64. {
  65. str+=String.valueOf(c);
  66. }
  67. }
  68. // 循环10次
  69. for(int i=1;i<=10;i++)
  70. {
  71. xin=new Word("",0);
  72. lian=word.next;
  73. //找到单词链中个数最多的
  74. while(lian!=null)
  75. {
  76. if(lian.geshu>xin.geshu)
  77. {
  78. xin=lian;
  79. }
  80. lian=lian.next;
  81. }
  82. //输出单词链中个数最多的
  83. System.out.println("弟"+i+"个 :"+xin.value+"个数:"+xin.geshu);
  84. lian=word;
  85. //删除单词链中单词个数最多的
  86. while(lian.next!=null)
  87. {
  88. if(lian.next.value.equalsIgnoreCase(xin.value))
  89. {
  90. lian.next=lian.next.next;
  91. break;
  92. }
  93. lian=lian.next;
  94. }
  95. }
  96. }
  97. }
    思路:读写文件,
    运用链表思想
    通过空格、换行等字符设为单词的区分
    每次通过遍历链表来查询链表中该单词是否已经存在
    若存在,则单词个数加1;否则,在链表中添加此新单词
    直到将文件读取完
    查询次数最多的单词时
    查询一个,则将此时最多的那个单词从链表中删除
  98.  
  99. 注意:1、链表通过 类中的对象成员来链接
    2、注意文本的换行为\r\t
    3、注意判断单词是否存在时的处理
    4、注意读写文件部分

基于java:读写一个英文的txt文件,记录单词个数,并输出十个出现最多的单词及出现的个数;的更多相关文章

  1. 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内

    查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...

  2. java将数据写入到txt文件中(txt有固定的格式)

    java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我 ...

  3. java存储数据到本地txt文件中

    java存储数据,方便打印日志等 1.会覆盖以前的数据 try { File writeName = new File("D:\\data.txt"); // 相对路径,如果没有则 ...

  4. 关于Java里面File类创建txt文件重复???

    private JButton getOpenButton() { if (openButton == null) { openButton = new JButton(); openButton.s ...

  5. Java导出List集合到txt文件中——(四)

    有时候,需要将数据以一定格式导出到txt文件中.利用Java的IO可以轻松的导出数据到txt中. package Action.txt; import java.io.BufferedWriter; ...

  6. Java读写hdfs上的avro文件

    1.通过Java往hdfs写avro文件 import java.io.File; import java.io.IOException; import java.io.OutputStream; i ...

  7. Java使用IO流读取TXT文件

    通过BufferedReader读取TXT文件window系统默认的编码是GBK,而IDE的编码多数为UTF-8,如果没有规定new InputStreamReader(new FileInputSt ...

  8. 文件内容统计:对任意给定的.txt文件进行内容的字符数、行数、单词数进行统计

    项目源码地址:https://gitee.com/xjtsh/projects 功能实现: wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe -w file ...

  9. 基于Java语言的IO操作(文件复制)

    public static void main(String[] args) { //获取复制开始前系统时间毫秒值 long start=System.currentTimeMillis(); //文 ...

随机推荐

  1. Letter Combinations of a Phone Number:深度优先和广度优先两种解法

    Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...

  2. hdu 2157 How many ways?? (可达矩阵)

    题意:给你一个有向图,从A 点到 B点恰好经过k个点的方案数 (k < 20), 可以走重复边 思路:利用离散数学中的可达矩阵,可达矩阵的K次幂便是从i到j走K步能到达的方案数 代码: #inc ...

  3. javascript执行顺序小结

    作为web开发人员,一定要对js的执行顺序,解析原理有一定了解,否则无法掌控这门小巧好用的语言 javascript是一门实现网页动态效果的语言,也是主要负责和服务端的交互,他抛弃了像java中类的束 ...

  4. 使用FSharp 探索Dotnet图像处理功能2--均衡灰度

    重新捡起大学里的图像处理,好像之前什么都没学到,但是我为什么还留着这本书呢?嘿嘿. 看到均衡灰度处理,上来就是积分,概率分布的公式,头微微的有点疼.网上看了点介绍,隔天再拿起书本,总算有了点眉目.简而 ...

  5. 在ASP.NET MVC4中配置Castle

    ---恢复内容开始--- Castle是针对.NET平台的一个非常优秀的开源项目,重点是开源的哦.它在NHibernate的基础上进一步封装,其原理基本与NHibernate相同,但它较好地解决NHi ...

  6. sublime-text-3设置输入中文方法

    sublime-text-3 编辑器性感而敏捷,却让人感慨有其长必有其短. 有些缺点都可以通过插件解决.但是要解决输入中文问题却很复杂,不能输入中文实在是太痛苦了. 我在做一个有很多文字的html页面 ...

  7. Reids详解-抄本

    1.redis是什么 Redis 是一个基于内存的高性能key-value数据库.是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库. 2.redis的特点 ...

  8. ESLint系列:ESLint入门安装及简单配置

    1.eslint需要依赖node.js环境,在配置之前需要安装好node.js; 2.npm install eslint --save-dev 或 npm install eslint --save ...

  9. jquery分页插件的修改

    前言 最近分页功能使用的比较多,所以从网上下载个jquery分页插件来使用, 之前用的都挺好的,直到昨天出现了逻辑问题,反复查看自己的代码,最后发现是点击页码后执行了多个点击事件.最后只有自己查看源码 ...

  10. 深入浅出node.js

    http://www.infoq.com/cn/articles/what-is-nodejs/