我是 Java 新手,所以任何建议将不胜感激。
我有一个包含文件和目录的树状文件系统。我想通过名称查找目录。
组件是一个接口,文件和目录都实现了它。
我在类 Directory 中编写了这个方法,以便找到名为 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(未找到任何内容),下一步都将是循环中的另一轮。
只需检查它是否返回不为空,然后再次返回。