【发布时间】:2021-03-30 18:46:30
【问题描述】:
我有两个类应该代表文件和目录(如计算机中的文件和目录)。 File 类保存有关文件的信息,例如名称和大小(在此处使用 getSize() 访问),Directory 类有两个保存子文件和子目录的列表。
基本上,我正在尝试递归地遍历并累加给定Directory(及其子目录)中所有文件的大小。到目前为止,这是我的代码:
public int size(Directory localDirect){
int sum = 0;
for (File file : this.files){
sum += file.getSize();
}
for (Directory directory : localDirect.directories){
sum += size(directory);
}
return sum;
}
当我运行它时,每次都会得到一个 0,与实际文件大小无关。我的第一个猜测是,由于我在每个方法调用中将sum 设置为 0,因此每次都将其重置为 0。但是,当我手动遵循逻辑时,我无法弄清楚为什么会重置 sum,因为在方法开始添加尺寸之前它被设置为 0。
任何人都可以看到我缺少什么或如何将其更改为更好地工作吗?
【问题讨论】: