0

在下面的代码中,我检查给定的 url 是否以允许的文件类型结尾(可能的类型:.jpg、.jpeg、.png 和 .gif)。类型列表保存在一个数组列表中,其中包含来自 UI 的文本描述(例如“JPG 图像”)。

我的目的是使函数遍历带有描述的列表,并使用相应的 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;
        }
    }
}
4

3 回答 3

6

未涵盖所有可能的执行路径。例如,如果类型是“JPG 图片”,但 url 既不是 JPG 也不是 JPEG,则该方法不会返回任何内容。

删除最后一个else子句,并false在方法结束时简单地返回。

于 2012-12-16T14:31:37.343 回答
4

好吧,很简单,如果嵌入的“叶”if语句之一为表达式返回 false,则应用程序不会得到返回语句。for循环也可能不会被执行。

要解决此问题,请将 移至return false方法的末尾,您应该没问题。

于 2012-12-16T14:29:54.427 回答
0

这是你的一个if

    else if (type.equalsIgnoreCase("PNG Images")) {
        if (url.isPNG()) {
            return true;
        }
        //otherwise... return what? (error here, put return false here)
    }

你也可以去掉最后一个else,只返回 false。

于 2012-12-16T14:31:52.873 回答