我是Java的新手,所以任何建议将不胜感激.
我有一个树状文件系统,其中包含文件和目录。我想按名称查找目录。组件是一个接口,文件和目录都实现它。我在类目录中编写了此方法,以便找到一个名为 name 的目录。
public Directory getDir(String name) {
Iterator<Component> iterator = (Iterator<Component>)components.iterator();
Component component = null;
while(iterator.hasNext()) {
component = iterator.next();
if(component instanceof Directory) {
if(component.getName().equals(name))
return (Directory) component;
else component.getDir(name);
}
}
return null;
}
不知何故,找到我的目录后,此方法不会停止。我试着写"return component.getDir(name)
",但没有帮助。它不会搜索节点的每个组件,只会搜索第一个组件。我做错了什么?请帮助我。谢谢
看起来像你的行: 不检查else component.getDir(name)
的返回值。无论递归调用返回的是找到的目录还是 null(未找到),接下来的事情将是循环中的另一轮。
只需检查它是否返回不为 null,然后再次返回。