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


     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("
    ")||String.valueOf(c).equals("
    ")||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;否则,在链表中添加此新单词
    直到将文件读取完
    查询次数最多的单词时
    查询一个,则将此时最多的那个单词从链表中删除

    注意:1、链表通过 类中的对象成员来链接
    2、注意文本的换行为
    3、注意判断单词是否存在时的处理
    4、注意读写文件部分
  • 相关阅读:
    Peer code review
    分析图书管理系统的5W1H
    项目风险分析作业
    课堂练习
    功能分析四个象限
    Android需求分析作业
    电梯演说模板练习
    敏捷流程的理解
    团队模型的小组辩论
    结对编程任意Demo
  • 原文地址:https://www.cnblogs.com/lizhiyan-world/p/3574414.html
Copyright © 2020-2023  润新知