A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

3.遍历D盘下的所有文件,统计出有多少种文件类型:将每种扩展名以及对应个数打印到控制台上;(12分)
//以上为题目,下图为输出格式要求
//请写出完整步骤,并给关键步骤注释,最好都注释

来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

11 个回复

倒序浏览
用递归,在递归方法外定义一个静态成员变量计数,每打印一个count++
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
LARK 发表于 2016-11-4 08:02
用递归,在递归方法外定义一个静态成员变量计数,每打印一个count++

这个逻辑我知道,但是具体的代码就~
回复 使用道具 举报
[Java] 纯文本查看 复制代码
package com.sp;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo {
	// 定义一个map集合,存放后缀名个数
	private static Map<String, Integer> map = new HashMap<>();

	public static void main(String[] args) {
		// 要遍历的路径
		File file = new File("D:\\桌面\\1");
		map = diGui(file);
		// 遍历Map
		Set<String> keySet = map.keySet();
		for (String key : keySet) {
			int num = map.get(key);
			System.out.println("扩展名:" + key + ":	" + num + "个");
		}
	}

	/**
	 * 递归判断路径
	 */
	private static Map<String, Integer> diGui(File file) {
		// 判断路径是否存在
		if (file.exists()) {
			if (file.isFile()) {
				// 如果是文件,获取后缀名,添加到map集合
				String houZhui = file.getName().substring(
						file.getName().lastIndexOf(".") + 1);
				// 添加到map集合
				if (map.containsKey(houZhui)) {
					// 如果houZhui已存在,获取值+1
					Integer value = map.get(houZhui);
					value++;
					map.put(houZhui, value);
				} else {
					// 如果houZhui已存在,值直接设为1
					map.put(houZhui, 1);
				}
			} else {
				// 是文件夹,获取文件夹下的文件及文件夹,继续递归
				File[] listFiles = file.listFiles();
				for (File file2 : listFiles) {
					diGui(file2);
				}
			}
		}
		return map;
	}
}


回复 使用道具 举报 1 0
上面代码试了一下没问题,参考参考
回复 使用道具 举报
Hunter黄涛 发表于 2016-11-4 08:41
这个逻辑我知道,但是具体的代码就~

我们当时点招考的就是这题,,要自己多思考,自己敲出来才是理解,不要看别人源代码
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
阿萨飒飒 发表于 2016-11-4 10:14
[mw_shl_code=java,true]package com.sp;

import java.io.File;

谢谢!这是前天3号上午时参加点招的最后一道题,考试时没做出来,考后还是感觉有问题一直运行不到最终的需求,所以想找大神指点一下,好吧这题弄懂。
回复 使用道具 举报
android和java的基础相似吗?
回复 使用道具 举报
Hunter黄涛 发表于 2016-11-5 00:07
谢谢!这是前天3号上午时参加点招的最后一道题,考试时没做出来,考后还是感觉有问题一直运行不到最终的 ...

考试是上机考还是手写?一共有几题啊?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
大黄蜂 发表于 2016-11-5 00:34
android和java的基础相似吗?

传智黑马这边的Android基础班和java基础班是一样的,都是学的JavaSE部分,就是java基础班的比安卓的多一个MySQL及JDBC开发。
回复 使用道具 举报
大黄蜂 发表于 2016-11-5 00:34
android和java的基础相似吗?

传智黑马这边的Android基础班和java基础班是一样的,都是学的JavaSE部分,就是java基础班的比安卓的多一个MySQL及JDBC开发。
回复 使用道具 举报
阿萨飒飒 发表于 2016-11-5 15:46
考试是上机考还是手写?一共有几题啊?

在校的话是上机考试3个编程题!第一题8分,第二题10分,第三题12分,共30分,20分及格通过!通过后才能进入面试环节,不然第二天还有一次补考机会!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马