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;否则,在链表中添加此新单词
直到将文件读取完
查询次数最多的单词时
查询一个,则将此时最多的那个单词从链表中删除
注意:1、链表通过 类中的对象成员来链接
2、注意文本的换行为\r\t
3、注意判断单词是否存在时的处理
4、注意读写文件部分
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。