题目:统计某段文字中“的”字出现了几次。(文字内容已保存在本地1.txt文件中)
1.txt中的文字:
这篇文章的标题
它的风格以及主要的内容。
呜呜呜说明天要期中考试,慌了慌了。
分析题目可知,要读取文件中的文字,然后检查“的”出现了几次
这下面可以不用看,使用的方法我都在注释里说明作用了,想深入了解的可以看一下,都很不错的。
用IO流编写一个程序,统计并输出某个文本文件中“a”字符的个数(这个是这个题的低配):
最后还需要转一下UTF-8
为什么要换成UTF-8呢?
utf-8考虑了很多种不同国家的字符,涵盖整个unicode码表,所以其存储一个字符的编码的时候,使用的字节长度也从1字节到4字节不等;而GBK只考虑中文——在unicode中的一小部分——的字符,的编码,所以它算好了只要2个字节就能涵盖到绝大多数常用中文(2个字节能表示6w多种字符),所以它存储一个字符的时候,所用的字节长度是固定的;
1 packagetask2;2
3 importjava.io.FileReader;4 importjava.io.IOException;5 importjava.io.BufferedReader;6
7 /*
8 *统计某段文字中“的”字出现了几次。(文字内容已保存在本地1.txt文件中)9 */
10 public classtask2 {11 public static void main(String[] args) throwsIOException {12 //BufferedReader类从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行
13 BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\lenovo\\Desktop\\1.txt"));14 String str = null;15 String str2 = "的";16 int num = 0;17 //.readLine()方法 :读一行文字并返回该行字符,若读到文件末尾,则返回null:18 //即当遇到换行符('\ n'),回车符('\ r')时会终止读取表示该行文字读取完毕且返回该行文字(不包含换行符和回车符)
19
20 while((str = reader.readLine() )!= null) {21 //.indexOf方法: 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -122 //这里为什么可以当做字符看呢?因为utp-8中char可以是1-6个字节
23 while(str.indexOf(str2) >= 0) {24 //这里是把str中出现“的”字之前的去掉,再去检验剩下的字里还有没有“的”,防止重复
25 int index =str.indexOf(str2);26 str = str.substring(index +str2.length());27 num++;28 }29 }30
31 System.out.println("文字中“的”个数为 " +num);32 reader.close();33 }34 }
一定不要忘了转UTF-8 !!!
结果: