当前位置: 首页 > news >正文

Java语言程序设计基础篇_编程练习题**18.30 (找出单词)

题目:**18.30 (找出单词)

编写一个程序,递归地找出某个目录下的所有文件中某个单词出现的次数。从命令行如下传递参数:

java Exercise18_30 dirName word
  • 习题思路
  1. (读取路径方法)和18.28题差不多,把找到文件后变量计数+1改成调用读取文件单词在文件内出现的次数即可(调用读取文件方法)。Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)-CSDN博客
  2. (读取文件方法)传入文件和单词,逐行读取文件,如果找到单词,则计数变量+1.
  3. (main方法)读取传入的路径和单词,调用读取路径方法。
  • 代码示例 

编程练习题18_30WordCount.java

package chapter_18;import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;public class 编程练习题18_30WordCount {public static void main(String[] args) throws FileNotFoundException{if(args.length != 2) {System.out.println("Usage: java 编程练习题18_30WordCount dirName word");System.exit(0);}String path = args[0];String word = args[1];File file = new File(path);int count = readPath(file, word);System.out.println("The string "+word+" appears a total of "+count+" times.");}public static int readPath(File file,String word) throws FileNotFoundException{int count = 0;ArrayList<File> files = new ArrayList<File>();files.add(file);while(!files.isEmpty()) {ArrayList<File> newList = new ArrayList<File>();for(File f : files) {if(f.isFile())count+=readFile(f, word);else {File[] fileList = f.listFiles();if(fileList != null) {for(File f2:fileList){if(f2.isDirectory())newList.add(f2);else count += readFile(f2, word);}}}}files = newList;}return count;}public static int readFile(File file,String word)throws FileNotFoundException {int count = 0;try(Scanner input = new Scanner(file)){while(input.hasNextLine()) {String line = input.nextLine();if(line.contains(word))count++;}}return count;}}
  • 输出结果 

javac 编程练习题18_30WordCount.javajava chapter_18/编程练习题18_30WordCount C:/Users/Lenovo/eclipse-workspace/JavaFX/src public

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【网络】高级IO——LT和ET
  • 洛谷P8572
  • 1. ZYNQ 2. MPSOC 3. FPGA 4. Vitis 5. 项目
  • 如何用AI论文生成工具撰写一篇高质量的成人教育毕业论文
  • 【AI创作组】Matlab绘图基础之plot函数
  • 机器学习 and 深度学习
  • Python办公自动化教程(003):PDF的加密
  • 【Git使用】删除Github仓库中的指定文件/文件夹
  • FPGA科学高效的编程方法有哪些?
  • 硬件工程师笔试面试——电机
  • Android MediaPlayer + GLSurfaceView 播放视频
  • 【Linux篇】常用命令及操作技巧(基础篇)
  • WebRtc一对一视频通话_New_peer信令处理
  • 深度学习02-pytorch-06-张量的形状操作
  • C++的 try-catch 结构
  • 【Amaple教程】5. 插件
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • node 版本过低
  • nodejs实现webservice问题总结
  • text-decoration与color属性
  • Vue ES6 Jade Scss Webpack Gulp
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 网页视频流m3u8/ts视频下载
  • 再次简单明了总结flex布局,一看就懂...
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • k8s使用glusterfs实现动态持久化存储
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ‌JavaScript 数据类型转换
  • # Maven错误Error executing Maven
  • #LLM入门|Prompt#3.3_存储_Memory
  • $.ajax()方法详解
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (SERIES12)DM性能优化
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (数据结构)顺序表的定义
  • (四)汇编语言——简单程序
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .NET 设计模式初探
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • ;号自动换行
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • []串口通信 零星笔记
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [2016.7 test.5] T1
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [AR Foundation] 人脸检测的流程
  • [C++]类和对象【上篇】
  • [HEOI2013]ALO
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题