我是新手。一种方法有两个错误。请帮助解决这些问题。
我正在使用多节点树制作文件系统。
此方法在子目录中返回给定名称的文件/目录。循环后,如果没有这样的文件/目录,则应该给出错误。
import java.util.ArrayList;
import java.util.Arrays;
import driver.exception.InvalidFileDirectoryException;
public class FileNode {
private FileNode parent;
private ArrayList<FileNode> children = new ArrayList<FileNode>();
private String name;
public FileNode getChild(String name) { // This method must return a type of FileNode.
for (int i = 0; i < children.size(); i++) {
if (children.get(i).getName() == name) {
return children.get(i);
}
if ((i == children.size()-1)
&& (children.get(i).getName() != name)) {
throw new InvalidFileDirectoryException(
name + ": No such file or directory"); // Unhandled exception type InvalidFileDirectoryException
}
}
}
我可以理解第一个错误。如果没有这样的文件或目录,此方法将不返回任何内容。但是,在这种情况下,我想给出一条错误消息。我该怎么办?请帮忙!
public class InvalidFileDirectoryException extends Exception {
public InvalidFileDirectoryException() {
super();
}
public InvalidFileDirectoryException(String message) {
super(message);
}
}
答案 0 :(得分:1)
将您的getChild
方法更改为:-
public FileNode getChild(String name) throws InvalidFileDirectoryException {
for (int i = 0; i < children.size(); i++) {
if (children.get(i).getName().equals(name)) {
return children.get(i);
}
}
throw new InvalidFileDirectoryException(name + ": No such file or directory");
}
这将扫描children
集合。如果找到匹配项,则此方法将返回子级。如果循环完成,但未找到匹配项,它将引发异常。请注意,方法签名为throws InvalidFileDirectoryException
。
答案 1 :(得分:0)
方法中的所有潜在路径都需要返回一个值。您不能有一个返回值且不返回值的方法!
您只能从循环体内的两个if语句返回。如果if语句都没有真实条件怎么办?因此:在循环之后添加return语句。然后该方法可能应该返回null。如果确实是错误情况,则应该(无条件地)引发异常。
看起来您正在使用==比较字符串。错了,您应该改用 equals()。