在下面的代码中,我检查给定的URL是否以允许的文件类型结束(可能的类型:.jpg,.jpeg,.png& .gif)。类型列表保存在arraylist中,该arraylist保存来自UI的文本描述(例如“JPG Images”)。
我的目的是让函数遍历带有描述的列表,并使用相应的URL检查方法检查url。
我希望这段代码可以工作,因为我相信每个场景都已被考虑:如果它是JPG,PNG或GIF,则返回true,否则返回false。但它仍然存在错误:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
This method must return a result of type boolean
这显然意味着某处的回报出了问题。我在俯瞰什么?
private boolean isImageURL(ImageURL url) {
for (String type : fileTypes) {
if (type.equalsIgnoreCase("JPG Images")) {
if (url.isJPG() || url.isJPEG()) {
return true;
}
} else if (type.equalsIgnoreCase("PNG Images")) {
if (url.isPNG()) {
return true;
}
} else if (type.equalsIgnoreCase("GIF Images")) {
if (url.isGIF()) {
return true;
}
} else {
return false;
}
}
}
答案 0 :(得分:6)
未涵盖所有可能的执行路径。例如,如果类型是“JPG Images”,但url既不是JPG也不是JPEG,则该方法不会返回任何内容。
删除最后一个else
子句,然后只返回方法末尾的false
。
答案 1 :(得分:4)
嗯,很简单,如果嵌入的“leaf”if
语句之一为表达式返回false,则应用程序不会返回return语句。 for
循环也可能无法执行。
要解决此问题,请将return false
移至方法的末尾,您应该没事。
答案 2 :(得分:0)
以下是您的if
之一:
else if (type.equalsIgnoreCase("PNG Images")) {
if (url.isPNG()) {
return true;
}
//otherwise... return what? (error here, put return false here)
}
你也可以摆脱最后的else
并返回false。