题目:统计某段文字中“的”字出现了几次。(文字内容已保存在本地1.txt文件中)
1.txt中的文字:
这篇文章的标题
它的风格以及主要的内容。
呜呜呜说明天要期中考试,慌了慌了。
分析题目可知,要读取文件中的文字,然后检查“的”出现了几次
这下面可以不用看,使用的方法我都在注释里说明作用了,想深入了解的可以看一下,都很不错的。
参考(太感人了呜呜呜):https://blog.csdn.net/qq_41532205/article/details/80684688?utm_source=blogxgwz1
百度经验,关于java中读取文件:https://jingyan.baidu.com/article/456c463b0756910a58314406.html
专门关于BufferedReader的:https://blog.csdn.net/qq_21808961/article/details/81561464
这个讲BufferedReader的也很好,但是他标号标错了,其实第2个(3)是readLine : https://blog.csdn.net/ai_bao_zi/article/details/81134801
关于indexof方法:https://www.runoob.com/java/java-string-indexof.html
关于substring方法:https://www.runoob.com/java/java-string-substring.html
用IO流编写一个程序,统计并输出某个文本文件中“a”字符的个数(这个是这个题的低配):
最后还需要转一下UTF-8
为什么要换成UTF-8呢?
资料来自:https://www.zhihu.com/question/20361462/answer/14899233
UTF-8 转GBK方法(万一用得到呢):https://www.jianshu.com/p/f4d4d35feaca
1 package task2; 2 3 import java.io.FileReader; 4 import java.io.IOException; 5 import java.io.BufferedReader; 6 7 /* 8 *统计某段文字中“的”字出现了几次。(文字内容已保存在本地1.txt文件中) 9 */ 10 public class task2 { 11 public static void main(String[] args) throws IOException { 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方法: 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1 22 //这里为什么可以当做字符看呢?因为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 !!!
结果: